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,7 +1150,6 @@ | ||
1150 | */ | 1150 | */ |
1151 | LIB3270_EXPORT int lib3270_field_length(H3270 *h, int baddr); | 1151 | LIB3270_EXPORT int lib3270_field_length(H3270 *h, int baddr); |
1152 | 1152 | ||
1153 | - | ||
1154 | /** | 1153 | /** |
1155 | * @brief Get a terminal character and attribute. | 1154 | * @brief Get a terminal character and attribute. |
1156 | * | 1155 | * |
@@ -1165,6 +1164,28 @@ | @@ -1165,6 +1164,28 @@ | ||
1165 | LIB3270_EXPORT int lib3270_get_element(H3270 *h, int baddr, unsigned char *c, unsigned short *attr); | 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 | * Get field region | 1189 | * Get field region |
1169 | * | 1190 | * |
1170 | * @param h Session handle. | 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,6 +93,33 @@ static void addch(H3270 *session, int baddr, unsigned char c, unsigned short att | ||
93 | session->cbk.update(session,baddr,c,attr,baddr == session->cursor_addr); | 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 | LIB3270_EXPORT int lib3270_get_element(H3270 *hSession, int baddr, unsigned char *c, unsigned short *attr) | 123 | LIB3270_EXPORT int lib3270_get_element(H3270 *hSession, int baddr, unsigned char *c, unsigned short *attr) |
97 | { | 124 | { |
98 | FAIL_IF_NOT_ONLINE(hSession); | 125 | FAIL_IF_NOT_ONLINE(hSession); |