Changeset 214aefb in mainline for uspace/lib/ui/src
- Timestamp:
- 2021-04-09T22:41:22Z (4 years ago)
- Branches:
- master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 0262f16c
- Parents:
- b0858150
- git-author:
- Jiri Svoboda <jiri@…> (2021-03-27 22:52:09)
- git-committer:
- jxsvoboda <5887334+jxsvoboda@…> (2021-04-09 22:41:22)
- Location:
- uspace/lib/ui/src
- Files:
-
- 3 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/ui/src/paint.c
rb0858150 r214aefb 149 149 } 150 150 151 /** Paint outset frame. 152 * 153 * @param resource UI resource 154 * @param rect Rectangle to paint onto 155 * @param inside Place to store inside rectangle or @c NULL 156 * @return EOK on success or an error code 157 */ 158 errno_t ui_paint_outset_frame(ui_resource_t *resource, gfx_rect_t *rect, 159 gfx_rect_t *inside) 160 { 161 gfx_rect_t frame; 162 errno_t rc; 163 164 rc = ui_paint_bevel(resource->gc, rect, 165 resource->wnd_frame_hi_color, resource->wnd_frame_sh_color, 166 1, &frame); 167 if (rc != EOK) 168 goto error; 169 170 rc = ui_paint_bevel(resource->gc, &frame, 171 resource->wnd_highlight_color, resource->wnd_shadow_color, 172 1, inside); 173 if (rc != EOK) 174 goto error; 175 176 return EOK; 177 error: 178 return rc; 179 } 180 151 181 /** Paint filled circle vertical scanline. 152 182 * -
uspace/lib/ui/src/resource.c
rb0858150 r214aefb 68 68 gfx_color_t *wnd_face_color = NULL; 69 69 gfx_color_t *wnd_text_color = NULL; 70 gfx_color_t *wnd_sel_text_color = NULL; 71 gfx_color_t *wnd_sel_text_bg_color = NULL; 70 72 gfx_color_t *wnd_frame_hi_color = NULL; 71 73 gfx_color_t *wnd_frame_sh_color = NULL; … … 139 141 goto error; 140 142 143 rc = gfx_color_new_rgb_i16(0xffff, 0xffff, 0xffff, &wnd_sel_text_color); 144 if (rc != EOK) 145 goto error; 146 147 rc = gfx_color_new_rgb_i16(0x5858, 0x6a6a, 0xc4c4, 148 &wnd_sel_text_bg_color); 149 if (rc != EOK) 150 goto error; 151 141 152 rc = gfx_color_new_rgb_i16(0x8888, 0x8888, 0x8888, &wnd_frame_hi_color); 142 153 if (rc != EOK) … … 200 211 resource->wnd_face_color = wnd_face_color; 201 212 resource->wnd_text_color = wnd_text_color; 213 resource->wnd_sel_text_color = wnd_sel_text_color; 214 resource->wnd_sel_text_bg_color = wnd_sel_text_bg_color; 202 215 resource->wnd_frame_hi_color = wnd_frame_hi_color; 203 216 resource->wnd_frame_sh_color = wnd_frame_sh_color; … … 232 245 if (wnd_text_color != NULL) 233 246 gfx_color_delete(wnd_text_color); 247 if (wnd_sel_text_color != NULL) 248 gfx_color_delete(wnd_sel_text_color); 249 if (wnd_sel_text_bg_color != NULL) 250 gfx_color_delete(wnd_sel_text_bg_color); 234 251 if (wnd_frame_hi_color != NULL) 235 252 gfx_color_delete(wnd_frame_hi_color); … … 280 297 gfx_color_delete(resource->wnd_face_color); 281 298 gfx_color_delete(resource->wnd_text_color); 299 gfx_color_delete(resource->wnd_sel_text_color); 300 gfx_color_delete(resource->wnd_sel_text_bg_color); 282 301 gfx_color_delete(resource->wnd_frame_hi_color); 283 302 gfx_color_delete(resource->wnd_frame_sh_color); … … 299 318 } 300 319 320 /** Set UI resource expose callback. 321 * 322 * @param resource Resource 323 * @param cb Callback 324 * @param arg Callback argument 325 */ 326 void ui_resource_set_expose_cb(ui_resource_t *resource, 327 ui_expose_cb_t cb, void *arg) 328 { 329 resource->expose_cb = cb; 330 resource->expose_arg = arg; 331 } 332 333 /** Force UI repaint after an area has been exposed. 334 * 335 * This is called when a popup disappears, which could have exposed some 336 * other UI elements. It causes complete repaint of the UI. 337 * 338 * NOTE Ideally we could specify the exposed rectangle and then limit 339 * the repaint to just that. That would, however, require means of 340 * actually clipping the repaint operation. 341 */ 342 void ui_resource_expose(ui_resource_t *resource) 343 { 344 if (resource->expose_cb != NULL) 345 resource->expose_cb(resource->expose_arg); 346 } 347 301 348 /** @} 302 349 */ -
uspace/lib/ui/src/wdecor.c
rb0858150 r214aefb 178 178 179 179 if ((wdecor->style & ui_wds_frame) != 0) { 180 rc = ui_paint_bevel(wdecor->res->gc, &rect, 181 wdecor->res->wnd_frame_hi_color, 182 wdecor->res->wnd_frame_sh_color, 1, &rect); 183 if (rc != EOK) 184 return rc; 185 186 if (wdecor->res->textmode == false) { 180 181 if (wdecor->res->textmode != false) { 187 182 rc = ui_paint_bevel(wdecor->res->gc, &rect, 188 wdecor->res->wnd_highlight_color, 189 wdecor->res->wnd_shadow_color, 1, &rect); 183 wdecor->res->wnd_frame_hi_color, 184 wdecor->res->wnd_frame_sh_color, 1, &rect); 185 if (rc != EOK) 186 return rc; 187 } else { 188 rc = ui_paint_outset_frame(wdecor->res, &rect, 189 &rect); 190 190 if (rc != EOK) 191 191 return rc; -
uspace/lib/ui/src/window.c
rb0858150 r214aefb 90 90 static void ui_window_app_invalidate(void *, gfx_rect_t *); 91 91 static void ui_window_app_update(void *); 92 static void ui_window_expose_cb(void *); 92 93 93 94 /** Initialize window parameters structure. … … 270 271 ui_wdecor_paint(wdecor); 271 272 273 ui_resource_set_expose_cb(res, ui_window_expose_cb, (void *) window); 274 272 275 window->ui = ui; 273 276 window->dwindow = dwindow; … … 922 925 } 923 926 927 /** Window expose callback. */ 928 static void ui_window_expose_cb(void *arg) 929 { 930 ui_window_t *window = (ui_window_t *) arg; 931 932 ui_window_paint(window); 933 } 934 924 935 /** @} 925 936 */
Note:
See TracChangeset
for help on using the changeset viewer.