Rev 3068 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3068 | Rev 3248 | ||
---|---|---|---|
Line 52... | Line 52... | ||
52 | panel->ctrl.handler = panel_proc; |
52 | panel->ctrl.handler = panel_proc; |
53 | panel->ctrl.parent = (ctrl_t*)win; |
53 | panel->ctrl.parent = (ctrl_t*)win; |
Line 54... | Line 54... | ||
54 | 54 | ||
Line -... | Line 55... | ||
- | 55 | panel->layout = 0; |
|
55 | panel->layout = 0; |
56 | |
- | 57 | panel->bitmap.width = 1920; |
|
- | 58 | panel->bitmap.height = PANEL_HEIGHT; |
|
56 | 59 | panel->bitmap.flags = 0; |
|
57 | ctx->pixmap = user_alloc(1920*PANEL_HEIGHT*4); |
60 | |
58 | if(!ctx->pixmap) |
61 | if( create_bitmap(&panel->bitmap) ) |
59 | { |
62 | { |
60 | printf("not enough memory for caption bitmap\n"); |
63 | printf("not enough memory for panel bitmap\n"); |
Line 61... | Line 64... | ||
61 | return 0; |
64 | return 0; |
- | 65 | } |
|
- | 66 | ||
Line 62... | Line -... | ||
62 | }; |
- | |
63 | 67 | ctx->pixmap = &panel->bitmap; |
|
Line 64... | Line 68... | ||
64 | // printf("win_w %d win_h %d\n", win->w, win->h); |
68 | ctx->offset_x = 0; |
65 | 69 | ctx->offset_y = 0; |
|
Line 152... | Line 156... | ||
152 | }; |
156 | }; |
Line 153... | Line 157... | ||
153 | 157 | ||
154 | void update_panel_size(window_t *win) |
158 | void update_panel_size(window_t *win) |
155 | { |
159 | { |
- | 160 | panel_t *panel = &win->panel; |
|
Line 156... | Line 161... | ||
156 | panel_t *panel = &win->panel; |
161 | bitmap_t *bitmap = panel->ctx.pixmap; |
157 | 162 | ||
158 | int old_size; |
163 | int old_size; |
Line 159... | Line 164... | ||
159 | int new_size; |
164 | int new_size; |
160 | int stride; |
165 | int pitch; |
Line 161... | Line 166... | ||
161 | 166 | ||
Line 162... | Line 167... | ||
162 | old_size = panel->ctx.stride * PANEL_HEIGHT; |
167 | old_size = bitmap->pitch * bitmap->height; |
163 | old_size = (old_size+4095) & ~4095; |
168 | old_size = (old_size+4095) & ~4095; |
Line 164... | Line 169... | ||
164 | 169 | ||
165 | stride = win->w*4; |
170 | pitch = ALIGN(win->w*4, 16); |
- | 171 | ||
- | 172 | new_size = pitch * PANEL_HEIGHT; |
|
- | 173 | new_size = (new_size+4095) & ~4095; |
|
Line 166... | Line -... | ||
166 | - | ||
167 | new_size = stride * PANEL_HEIGHT; |
174 | |
168 | new_size = (new_size+4095) & ~4095; |
175 | if( new_size < old_size) |
Line 169... | Line 176... | ||
169 | 176 | user_unmap(bitmap->data, new_size, old_size-new_size); |
|
170 | if( new_size < old_size) |
177 | |
Line 210... | Line 217... | ||
210 | void draw_panel(panel_t *panel) |
217 | void draw_panel(panel_t *panel) |
211 | { |
218 | { |
212 | int *pixmap, *src; |
219 | int *pixmap, *src; |
213 | int i, j, w; |
220 | int i, j, w; |
Line 214... | Line 221... | ||
214 | 221 | ||
215 | pixmap = panel->ctx.pixmap; |
222 | blit_raw(&panel->ctx, res_panel_left, 0, 0, |
Line 216... | Line -... | ||
216 | src = res_panel_left; |
- | |
217 | - | ||
218 | for(i=0; i < PANEL_HEIGHT; i++) |
- | |
219 | { |
- | |
220 | for(j=0; j < PANEL_CORNER_W; j++) |
- | |
221 | pixmap[j] = src[j]; |
- | |
222 | pixmap+= panel->ctx.stride/4; |
- | |
Line 223... | Line 223... | ||
223 | src+= PANEL_CORNER_W; |
223 | PANEL_CORNER_W, PANEL_HEIGHT, PANEL_CORNER_W*4); |
224 | }; |
224 | |
225 | 225 | ||
226 | w = panel->ctrl.w - (2*PANEL_CORNER_W); |
226 | w = panel->ctrl.w - (2*PANEL_CORNER_W); |
227 | if( w > 0) |
227 | if( w > 0) |
228 | { |
228 | { |
Line 229... | Line 229... | ||
229 | pixmap = panel->ctx.pixmap; |
229 | pixmap = (int*)panel->ctx.pixmap->data; |
230 | pixmap+= PANEL_CORNER_W; |
230 | pixmap+= PANEL_CORNER_W; |
231 | src = res_panel_body; |
231 | src = res_panel_body; |
232 | 232 | ||
233 | for(i = 0; i < PANEL_HEIGHT; i++) |
233 | for(i = 0; i < PANEL_HEIGHT; i++) |
234 | { |
234 | { |
235 | for(j = 0; j < w; j++) |
235 | for(j = 0; j < w; j++) |
Line 236... | Line 236... | ||
236 | pixmap[j] = src[i]; |
236 | pixmap[j] = src[i]; |
237 | pixmap+= panel->ctx.stride/4; |
237 | pixmap+= panel->ctx.pixmap->pitch/4; |
238 | } |
- | |
239 | }; |
- | |
Line 240... | Line -... | ||
240 | - | ||
241 | pixmap = panel->ctx.pixmap; |
- | |
242 | pixmap+= panel->ctrl.w - PANEL_CORNER_W; |
- | |
243 | - | ||
244 | src = res_panel_right; |
- | |
245 | - | ||
246 | for(i = 0; i < PANEL_HEIGHT; i++) |
- | |
Line 247... | Line 238... | ||
247 | { |
238 | } |
248 | for(j = 0; j < PANEL_CORNER_W; j++) |
239 | }; |
Line 249... | Line 240... | ||
249 | pixmap[j] = src[j]; |
240 | |
250 | pixmap+= panel->ctx.stride/4; |
241 | blit_raw(&panel->ctx, res_panel_right, panel->ctrl.w - PANEL_CORNER_W, 0, |
251 | src+= PANEL_CORNER_W; |
242 | PANEL_CORNER_W, PANEL_HEIGHT, PANEL_CORNER_W*4); |
252 | }; |
243 | |
253 | 244 | ||
254 | ctrl_t *child; |
245 | ctrl_t *child; |
Line 255... | Line 246... | ||
255 | child = (ctrl_t*)panel->ctrl.child.next; |
246 | child = (ctrl_t*)panel->ctrl.child.next; |
Line 326... | Line 317... | ||
326 | void blit_panel(panel_t *panel) |
317 | void blit_panel(panel_t *panel) |
327 | { |
318 | { |
328 | // printf("%s w:%d h:%d stride: %d\n",__FUNCTION__, |
319 | // printf("%s w:%d h:%d stride: %d\n",__FUNCTION__, |
329 | // cpt->ctrl.w, cpt->ctrl.h, cpt->ctx.stride); |
320 | // cpt->ctrl.w, cpt->ctrl.h, cpt->ctx.stride); |
Line 330... | Line 321... | ||
330 | 321 | ||
331 | Blit(panel->ctx.pixmap, panel->draw.l, panel->draw.t, |
322 | Blit(panel->ctx.pixmap->data, panel->draw.l, panel->draw.t, |
332 | 0, 0, panel->ctrl.w, panel->ctrl.h, |
323 | 0, 0, panel->ctrl.w, panel->ctrl.h, |
333 | panel->ctrl.w, panel->ctrl.h, panel->ctx.stride); |
324 | panel->ctrl.w, panel->ctrl.h, panel->ctx.pixmap->pitch); |