Subversion Repositories Kolibri OS

Rev

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);