Commit 8717dba1ca05adf8b2a475e9d07f5350b8d61b8d
1 parent
64d1f0f8
Exists in
master
and in
3 other branches
Adding methods to get attributes from address.
Showing
2 changed files
with
49 additions
and
1 deletions
Show diff stats
src/include/lib3270.h
... | ... | @@ -1150,7 +1150,6 @@ |
1150 | 1150 | */ |
1151 | 1151 | LIB3270_EXPORT int lib3270_field_length(H3270 *h, int baddr); |
1152 | 1152 | |
1153 | - | |
1154 | 1153 | /** |
1155 | 1154 | * @brief Get a terminal character and attribute. |
1156 | 1155 | * |
... | ... | @@ -1165,6 +1164,28 @@ |
1165 | 1164 | LIB3270_EXPORT int lib3270_get_element(H3270 *h, int baddr, unsigned char *c, unsigned short *attr); |
1166 | 1165 | |
1167 | 1166 | /** |
1167 | + * @brief Check if the informed addr is marked as selected. | |
1168 | + * | |
1169 | + * @param h Session Handle. | |
1170 | + * @param baddr Element address ((element_row*cols)+element_col) | |
1171 | + * | |
1172 | + * @return >0 zero if element is selected, 0 if not, -1 if fails (sets errno). | |
1173 | + * | |
1174 | + */ | |
1175 | + LIB3270_EXPORT int lib3270_is_selected(H3270 *hSession, int baddr); | |
1176 | + | |
1177 | + /** | |
1178 | + * @brief Get attribute at the requested ADDR. | |
1179 | + * | |
1180 | + * @param h Session Handle. | |
1181 | + * @param baddr Element address ((element_row*cols)+element_col) | |
1182 | + * | |
1183 | + * @return Attribute of the required address or -1 if failed. | |
1184 | + * | |
1185 | + */ | |
1186 | + LIB3270_EXPORT LIB3270_ATTR lib3270_get_attribute_at_address(H3270 *hSession, int baddr); | |
1187 | + | |
1188 | + /** | |
1168 | 1189 | * Get field region |
1169 | 1190 | * |
1170 | 1191 | * @param h Session handle. | ... | ... |
src/lib3270/screen.c
... | ... | @@ -93,6 +93,33 @@ static void addch(H3270 *session, int baddr, unsigned char c, unsigned short att |
93 | 93 | session->cbk.update(session,baddr,c,attr,baddr == session->cursor_addr); |
94 | 94 | } |
95 | 95 | |
96 | +LIB3270_EXPORT LIB3270_ATTR lib3270_get_attribute_at_address(H3270 *hSession, int baddr) | |
97 | +{ | |
98 | + if(check_online_session(hSession)) | |
99 | + return (LIB3270_ATTR) -1; | |
100 | + | |
101 | + if(!hSession->text || baddr < 0 || baddr > (hSession->rows*hSession->cols)) | |
102 | + { | |
103 | + errno = EINVAL; | |
104 | + return (LIB3270_ATTR) -1; | |
105 | + } | |
106 | + | |
107 | + return hSession->text[baddr].attr; | |
108 | +} | |
109 | + | |
110 | +LIB3270_EXPORT int lib3270_is_selected(H3270 *hSession, int baddr) | |
111 | +{ | |
112 | + FAIL_IF_NOT_ONLINE(hSession); | |
113 | + | |
114 | + if(!hSession->text || baddr < 0 || baddr > (hSession->rows*hSession->cols)) | |
115 | + { | |
116 | + errno = EINVAL; | |
117 | + return -1; | |
118 | + } | |
119 | + | |
120 | + return (hSession->text[baddr].attr & LIB3270_ATTR_SELECTED) != 0; | |
121 | +} | |
122 | + | |
96 | 123 | LIB3270_EXPORT int lib3270_get_element(H3270 *hSession, int baddr, unsigned char *c, unsigned short *attr) |
97 | 124 | { |
98 | 125 | FAIL_IF_NOT_ONLINE(hSession); | ... | ... |