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 39... Line 39...
39
    cpt->ctrl.parent  = (ctrl_t*)win;
39
    cpt->ctrl.parent  = (ctrl_t*)win;
40
 
40
 
Line 41... Line 41...
41
    cpt->text = win->caption_txt;
41
    cpt->text = win->caption_txt;
Line -... Line 42...
-
 
42
 
42
 
43
    cpt->bitmap.width  = 1920;
-
 
44
    cpt->bitmap.height = CAPTION_HEIGHT;
-
 
45
    cpt->bitmap.flags  = 0;
43
    ctx->pixmap = user_alloc(1920*CAPTION_HEIGHT*4);
46
 
44
    if(!ctx->pixmap)
47
    if( create_bitmap(&cpt->bitmap) )
45
    {
48
    {
46
        printf("not enough memory for caption bitmap\n");
49
        printf("not enough memory for caption bitmap\n");
47
        return 0;
50
        return 0;
Line 48... Line -...
48
    };
-
 
Line -... Line 51...
-
 
51
    }
49
 
52
 
50
//    printf("win_w %d win_h %d\n", win->w, win->h);
53
 
51
 
54
//    printf("win_w %d win_h %d\n", win->w, win->h);
Line 52... Line 55...
52
    ctx->stride   = win->w*4;
55
    ctx->pixmap   = &cpt->bitmap;
Line 77... Line 80...
77
 
80
 
78
void update_caption_size(window_t *win)
81
void update_caption_size(window_t *win)
79
{
82
{
-
 
83
    caption_t *cpt = &win->caption;
Line 80... Line 84...
80
    caption_t *cpt = &win->caption;
84
    bitmap_t  *bitmap = cpt->ctx.pixmap;
81
 
85
 
82
    int old_size;
86
    int old_size;
Line 83... Line 87...
83
    int new_size;
87
    int new_size;
84
    int stride;
88
    int pitch;
Line 85... Line 89...
85
 
89
 
Line 86... Line 90...
86
    old_size = cpt->ctx.stride * CAPTION_HEIGHT;
90
    old_size = bitmap->pitch * bitmap->height;
87
    old_size = (old_size+4095) & ~4095;
91
    old_size = (old_size+4095) & ~4095;
Line 88... Line 92...
88
 
92
 
89
    stride = win->w*4;
93
    pitch = ALIGN(win->w*4, 16);
Line 90... Line 94...
90
 
94
 
-
 
95
    new_size = pitch * CAPTION_HEIGHT;
Line 91... Line 96...
91
    new_size = stride * CAPTION_HEIGHT;
96
    new_size = (new_size+4095) & ~4095;
92
    new_size = (new_size+4095) & ~4095;
97
 
93
 
98
    if( new_size < old_size)
94
    if( new_size < old_size)
99
        user_unmap(bitmap->data, new_size, old_size-new_size);
Line 113... Line 118...
113
                           cpt->minimize_btn->ctrl.w;
118
                           cpt->minimize_btn->ctrl.w;
114
 
119
 
Line 115... Line 120...
115
};
120
};
Line 116... Line -...
116
 
-
 
117
typedef struct
-
 
118
{
-
 
119
    uint32_t    width;
-
 
120
    uint32_t    height;
-
 
121
    uint32_t    pitch;
-
 
122
    uint32_t    handle;
-
 
123
    uint8_t    *data;
-
 
Line 124... Line 121...
124
}bitmap_t;
121
 
Line 125... Line 122...
125
 
122
 
126
extern int win_font;
123
extern int win_font;
127
 
124
 
-
 
125
void draw_caption(caption_t *cpt)
128
void draw_caption(caption_t *cpt)
126
{
Line 129... Line -...
129
{
-
 
130
    int *pixmap, *src;
127
    int *pixmap, *src;
131
    int  i, j, w;
-
 
132
 
-
 
133
    pixmap = cpt->ctx.pixmap;
-
 
134
    src = res_caption_left;
128
    rect_t rc;
135
 
-
 
136
    for(i=0; i < CAPTION_HEIGHT; i++)
-
 
137
    {
-
 
138
        for(j=0; j < CAPTION_CORNER_W; j++)
-
 
Line 139... Line 129...
139
            pixmap[j] = src[j];
129
    int  i, j, w;
140
        pixmap+= cpt->ctx.stride/4;
130
 
141
        src+= CAPTION_CORNER_W;
131
    blit_raw(&cpt->ctx, res_caption_left, 0, 0,
142
    };
132
             CAPTION_CORNER_W, CAPTION_HEIGHT, CAPTION_CORNER_W*4);
143
 
133
 
144
    w = cpt->ctrl.w - (2*CAPTION_CORNER_W);
134
    w = cpt->ctrl.w - (2*CAPTION_CORNER_W);
Line 145... Line 135...
145
    if( w > 0)
135
    if( w > 0)
146
    {
136
    {
147
        pixmap = cpt->ctx.pixmap;
137
        pixmap = (int*)cpt->ctx.pixmap->data;
148
        pixmap+= CAPTION_CORNER_W;
138
        pixmap+= CAPTION_CORNER_W;
149
        src = res_caption_body;
139
        src = res_caption_body;
150
 
140
 
151
        for(i = 0; i < CAPTION_HEIGHT; i++)
-
 
152
        {
-
 
153
            for(j = 0; j < w; j++)
-
 
154
                pixmap[j] = src[i];
-
 
Line -... Line 141...
-
 
141
        for(i = 0; i < CAPTION_HEIGHT; i++)
155
            pixmap+= cpt->ctx.stride/4;
142
        {
Line 156... Line -...
156
        }
-
 
157
    };
-
 
158
 
-
 
159
    pixmap = cpt->ctx.pixmap;
-
 
160
    pixmap+= cpt->ctrl.w - CAPTION_CORNER_W;
-
 
161
 
-
 
162
    src = res_caption_right;
143
            for(j = 0; j < w; j++)
Line 163... Line -...
163
 
-
 
Line -... Line 144...
-
 
144
                pixmap[j] = src[i];
-
 
145
            pixmap+= cpt->ctx.pixmap->pitch/4;
-
 
146
        }
-
 
147
 
164
    for(i = 0; i < CAPTION_HEIGHT; i++)
148
//        blit_raw(&cpt->ctx,res_caption_body, CAPTION_CORNER_W, 0,
165
    {
149
//                 w, CAPTION_HEIGHT, 0);
-
 
150
 
Line -... Line 151...
-
 
151
    };
166
        for(j = 0; j < CAPTION_CORNER_W; j++)
152
 
Line 167... Line 153...
167
            pixmap[j] = src[j];
153
 
168
        pixmap+= cpt->ctx.stride/4;
154
    blit_raw(&cpt->ctx,res_caption_right, cpt->ctrl.w - CAPTION_CORNER_W, 0,
Line 169... Line 155...
169
        src+= CAPTION_CORNER_W;
155
             CAPTION_CORNER_W, CAPTION_HEIGHT,CAPTION_CORNER_W*4);
Line 259... Line 245...
259
{
245
{
260
//    printf("%s w:%d h:%d stride: %d\n",__FUNCTION__,
246
//    printf("%s w:%d h:%d stride: %d\n",__FUNCTION__,
261
//            cpt->ctrl.w, cpt->ctrl.h, cpt->ctx.stride);
247
//            cpt->ctrl.w, cpt->ctrl.h, cpt->ctx.stride);
262
 
248
 
Line 263... Line 249...
263
    Blit(cpt->ctx.pixmap, 0, 0, 0, 0, cpt->ctrl.w, cpt->ctrl.h,
249
    Blit(cpt->ctx.pixmap->data, 0, 0, 0, 0, cpt->ctrl.w, cpt->ctrl.h,
264
         cpt->ctrl.w, cpt->ctrl.h, cpt->ctx.stride);
250
         cpt->ctrl.w, cpt->ctrl.h, cpt->ctx.pixmap->pitch);
265
};
251
};