Changes in uspace/lib/ui/src/checkbox.c [b433f68:806d761] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/ui/src/checkbox.c
rb433f68 r806d761 1 1 /* 2 * Copyright (c) 202 1Jiri Svoboda2 * Copyright (c) 2024 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 52 52 checkbox_box_h = 16, 53 53 checkbox_label_margin = 8, 54 checkbox_cross_n = 5, 55 checkbox_cross_w = 2, 56 checkbox_cross_h = 2 54 57 }; 55 58 … … 136 139 } 137 140 138 /** Set buttonrectangle.139 * 140 * @param checkbox Button141 * @param rect New buttonrectangle141 /** Set check box rectangle. 142 * 143 * @param checkbox Check box 144 * @param rect New check box rectangle 142 145 */ 143 146 void ui_checkbox_set_rect(ui_checkbox_t *checkbox, gfx_rect_t *rect) … … 146 149 } 147 150 148 /** Paint check box. 151 /** Return if check box is checked. 152 * 153 * @param checkbox Check box 154 * @return @c true iff check box is checked 155 */ 156 bool ui_checkbox_get_checked(ui_checkbox_t *checkbox) 157 { 158 return checkbox->checked; 159 } 160 161 /** Set check box checked state. 162 * 163 * @param checkbox Check box 164 * @param checked @c true iff checkbox should be checked 165 */ 166 void ui_checkbox_set_checked(ui_checkbox_t *checkbox, bool checked) 167 { 168 checkbox->checked = checked; 169 } 170 171 /** Paint check box in graphics mode. 149 172 * 150 173 * @param checkbox Check box 151 174 * @return EOK on success or an error code 152 175 */ 153 errno_t ui_checkbox_paint (ui_checkbox_t *checkbox)176 errno_t ui_checkbox_paint_gfx(ui_checkbox_t *checkbox) 154 177 { 155 178 gfx_coord2_t pos; … … 188 211 189 212 if (checkbox->checked) { 190 box_center.x = (box_inside.p0.x + box_inside.p1.x) / 2; 191 box_center.y = (box_inside.p0.y + box_inside.p1.y) / 2; 192 193 gfx_text_fmt_init(&fmt); 194 fmt.color = checkbox->res->entry_fg_color; 195 fmt.halign = gfx_halign_center; 196 fmt.valign = gfx_valign_center; 197 198 rc = gfx_puttext(checkbox->res->font, &box_center, &fmt, "X"); 213 rc = gfx_set_color(checkbox->res->gc, 214 checkbox->res->entry_fg_color); 199 215 if (rc != EOK) 200 216 goto error; 217 218 box_center.x = (box_inside.p0.x + box_inside.p1.x) / 2 - 1; 219 box_center.y = (box_inside.p0.y + box_inside.p1.y) / 2 - 1; 220 221 rc = ui_paint_cross(checkbox->res->gc, &box_center, 222 checkbox_cross_n, checkbox_cross_w, checkbox_cross_h); 223 if (rc != EOK) 224 goto error; 201 225 } 202 226 … … 207 231 208 232 gfx_text_fmt_init(&fmt); 233 fmt.font = checkbox->res->font; 209 234 fmt.color = checkbox->res->wnd_text_color; 210 235 fmt.halign = gfx_halign_left; 211 236 fmt.valign = gfx_valign_center; 212 237 213 rc = gfx_puttext( checkbox->res->font,&pos, &fmt, checkbox->caption);238 rc = gfx_puttext(&pos, &fmt, checkbox->caption); 214 239 if (rc != EOK) 215 240 goto error; … … 222 247 error: 223 248 return rc; 249 } 250 251 /** Paint check box in text mode. 252 * 253 * @param checkbox Check box 254 * @return EOK on success or an error code 255 */ 256 errno_t ui_checkbox_paint_text(ui_checkbox_t *checkbox) 257 { 258 gfx_coord2_t pos; 259 gfx_text_fmt_t fmt; 260 bool depressed; 261 errno_t rc; 262 263 /* Paint checkbox */ 264 265 depressed = checkbox->held && checkbox->inside; 266 267 pos.x = checkbox->rect.p0.x; 268 pos.y = checkbox->rect.p0.y; 269 270 gfx_text_fmt_init(&fmt); 271 fmt.font = checkbox->res->font; 272 fmt.color = depressed ? checkbox->res->entry_act_bg_color : 273 checkbox->res->wnd_text_color; 274 fmt.halign = gfx_halign_left; 275 fmt.valign = gfx_valign_top; 276 277 rc = gfx_puttext(&pos, &fmt, checkbox->checked ? "[X]" : "[ ]"); 278 if (rc != EOK) 279 goto error; 280 281 /* Paint checkbox label */ 282 283 pos.x += 4; 284 fmt.color = checkbox->res->wnd_text_color; 285 286 rc = gfx_puttext(&pos, &fmt, checkbox->caption); 287 if (rc != EOK) 288 goto error; 289 290 rc = gfx_update(checkbox->res->gc); 291 if (rc != EOK) 292 goto error; 293 294 return EOK; 295 error: 296 return rc; 297 } 298 299 /** Paint check box. 300 * 301 * @param checkbox Check box 302 * @return EOK on success or an error code 303 */ 304 errno_t ui_checkbox_paint(ui_checkbox_t *checkbox) 305 { 306 if (checkbox->res->textmode) 307 return ui_checkbox_paint_text(checkbox); 308 else 309 return ui_checkbox_paint_gfx(checkbox); 224 310 } 225 311 … … 336 422 } 337 423 break; 424 case POS_DCLICK: 425 break; 338 426 } 339 427
Note:
See TracChangeset
for help on using the changeset viewer.