Changeset 972


Ignore:
Timestamp:
May 20, 2006, 10:11:58 AM (15 years ago)
Author:
Sam Hocevar
Message:
  • Fixed awful indenting of the GL plugin.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcaca/trunk/caca/driver_gl.c

    r969 r972  
    164164
    165165    for(i = 32; i < 128; i++)
    166         {
    167             glGenTextures(1, (GLuint*)&dp->drv.p->id[i - 32]);
    168             glBindTexture(GL_TEXTURE_2D, dp->drv.p->id[i - 32]);
    169             glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    170             glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    171             glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB8,
    172                          16, 16, 0, GL_RGB, GL_UNSIGNED_BYTE, empty_texture);
    173         }
     166    {
     167        glGenTextures(1, (GLuint*)&dp->drv.p->id[i - 32]);
     168        glBindTexture(GL_TEXTURE_2D, dp->drv.p->id[i - 32]);
     169        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
     170        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
     171        glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB8,
     172                     16, 16, 0, GL_RGB, GL_UNSIGNED_BYTE, empty_texture);
     173    }
    174174
    175175    for(i = 0; i < 8; i++)
    176         {
    177             glGenTextures(1, (GLuint*)&dp->drv.p->id_uni[i]);
    178             glBindTexture(GL_TEXTURE_2D, dp->drv.p->id_uni[i]);
    179             glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    180             glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    181             glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB8,
    182                          16, 16, 0, GL_RGB, GL_UNSIGNED_BYTE, empty_texture);
    183         }
     176    {
     177        glGenTextures(1, (GLuint*)&dp->drv.p->id_uni[i]);
     178        glBindTexture(GL_TEXTURE_2D, dp->drv.p->id_uni[i]);
     179        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
     180        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
     181        glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB8,
     182                     16, 16, 0, GL_RGB, GL_UNSIGNED_BYTE, empty_texture);
     183    }
    184184
    185185    for(i = 32; i < 128; i++)
    186         {
    187             glDisable(GL_TEXTURE_2D);
    188             glClear(GL_COLOR_BUFFER_BIT);
    189 
    190             glColor3f(1, 1, 1);
    191             glRasterPos2f(0, 15);
    192             glutBitmapCharacter(GLUT_BITMAP_9_BY_15, i);
    193 
    194             glEnable(GL_TEXTURE_2D);
    195             glBindTexture(GL_TEXTURE_2D, dp->drv.p->id[i - 32]);
    196             glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB,
    197                              0, dp->drv.p->height - 16, 16, 16, 0);
     186    {
     187        glDisable(GL_TEXTURE_2D);
     188        glClear(GL_COLOR_BUFFER_BIT);
     189
     190        glColor3f(1, 1, 1);
     191        glRasterPos2f(0, 15);
     192        glutBitmapCharacter(GLUT_BITMAP_9_BY_15, i);
     193
     194        glEnable(GL_TEXTURE_2D);
     195        glBindTexture(GL_TEXTURE_2D, dp->drv.p->id[i - 32]);
     196        glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB,
     197                         0, dp->drv.p->height - 16, 16, 16, 0);
    198198
    199199#ifdef HAVE_GLUTCHECKLOOP
    200             glutCheckLoop();
     200        glutCheckLoop();
    201201#else
    202             glutMainLoopEvent();
    203 #endif
    204             glutSwapBuffers();
    205 
    206         }
     202        glutMainLoopEvent();
     203#endif
     204        glutSwapBuffers();
     205
     206    }
     207
    207208    /* CP437 hack */
    208209    for(i = 0; i < 8; i++)
    209         {
    210             glDisable(GL_TEXTURE_2D);
    211             glClear(GL_COLOR_BUFFER_BIT);
    212             glColor3f(1, 1, 1);
    213             glTranslatef(0.5,0.5,0);
    214 
    215             if(i==0)                  /* 0x00002580*/
     210    {
     211        glDisable(GL_TEXTURE_2D);
     212        glClear(GL_COLOR_BUFFER_BIT);
     213        glColor3f(1, 1, 1);
     214        glTranslatef(0.5,0.5,0);
     215
     216        if(i==0)                  /* 0x00002580*/
     217        {
     218            glBegin(GL_QUADS);
     219            glVertex2f(0,0); glVertex2f(9,0); glVertex2f(9,7); glVertex2f(0,7);
     220            glEnd();
     221        }
     222        else if(i==1)             /* 0x00002584*/
     223        {
     224            glBegin(GL_QUADS);
     225            glVertex2f(0,7); glVertex2f(9,7); glVertex2f(9,15); glVertex2f(0,15);
     226            glEnd();
     227        }
     228        else if(i==2)             /* 0x00002588*/
     229        {
     230            glBegin(GL_QUADS);
     231            glVertex2f(0,0); glVertex2f(9,0); glVertex2f(9,15); glVertex2f(0,15);
     232            glEnd();
     233        }
     234        else if(i==3)             /* 0x0000258c*/
     235        {
     236            glBegin(GL_QUADS);
     237            glVertex2f(0,0); glVertex2f(4,0); glVertex2f(4,15); glVertex2f(0,15);
     238            glEnd();
     239        }
     240        else if(i==4)             /* 0x00002590*/
     241        {
     242            glBegin(GL_QUADS);
     243            glVertex2f(4,0); glVertex2f(9,0); glVertex2f(9,15); glVertex2f(4,15);
     244            glEnd();
     245        }
     246        else if(i>=5)             /* 0x00002591*/
     247        {
     248            int a, j, k = i-5;
     249            for(j = dp->drv.p->font_height; j--; )
     250                for(a = dp->drv.p->font_width; a--; )
    216251                {
    217                     glBegin(GL_QUADS);
    218                     glVertex2f(0,0); glVertex2f(9,0); glVertex2f(9,7); glVertex2f(0,7);
     252                    if(((a + 2 * (j & 1)) & 3) > k)
     253                        continue;
     254
     255                    glBegin(GL_POINTS);
     256                    glVertex2f(a, j);
    219257                    glEnd();
    220258                }
    221             else if(i==1)             /* 0x00002584*/
    222                 {
    223                     glBegin(GL_QUADS);
    224                     glVertex2f(0,7); glVertex2f(9,7); glVertex2f(9,15); glVertex2f(0,15);
    225                     glEnd();
    226                 }
    227             else if(i==2)             /* 0x00002588*/
    228                 {
    229                     glBegin(GL_QUADS);
    230                     glVertex2f(0,0); glVertex2f(9,0); glVertex2f(9,15); glVertex2f(0,15);
    231                     glEnd();
    232                 }
    233             else if(i==3)             /* 0x0000258c*/
    234                 {
    235                     glBegin(GL_QUADS);
    236                     glVertex2f(0,0); glVertex2f(4,0); glVertex2f(4,15); glVertex2f(0,15);
    237                     glEnd();
    238                 }
    239             else if(i==4)             /* 0x00002590*/
    240                 {
    241                     glBegin(GL_QUADS);
    242                     glVertex2f(4,0); glVertex2f(9,0); glVertex2f(9,15); glVertex2f(4,15);
    243                     glEnd();
    244                 }
    245             else if(i>=5)             /* 0x00002591*/
    246                 {
    247                     int a, j, k = i-5;
    248                     for(j = dp->drv.p->font_height; j--; )
    249                         for(a = dp->drv.p->font_width; a--; )
    250                             {
    251                                 if(((a + 2 * (j & 1)) & 3) > k)
    252                                     continue;
    253 
    254                                 glBegin(GL_POINTS);
    255                                 glVertex2f(a, j);
    256                                 glEnd();
    257                             }
    258                 }
    259 
    260 
    261 
    262             glEnable(GL_TEXTURE_2D);
    263             glBindTexture(GL_TEXTURE_2D, dp->drv.p->id_uni[i]);
    264             glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB,
    265                              0, dp->drv.p->height - 16, 16, 16, 0);
     259        }
     260
     261        glEnable(GL_TEXTURE_2D);
     262        glBindTexture(GL_TEXTURE_2D, dp->drv.p->id_uni[i]);
     263        glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB,
     264                         0, dp->drv.p->height - 16, 16, 16, 0);
    266265#ifdef HAVE_GLUTCHECKLOOP
    267             glutCheckLoop();
     266        glutCheckLoop();
    268267#else
    269             glutMainLoopEvent();
    270 #endif
    271             glutSwapBuffers();
    272             glutPostRedisplay();
    273 
    274 
    275         }
    276 
    277 
     268        glutMainLoopEvent();
     269#endif
     270        glutSwapBuffers();
     271        glutPostRedisplay();
     272    }
    278273
    279274    return 0;
     
    311306    line = 0;
    312307    for(y = 0; y < dp->drv.p->height; y += dp->drv.p->font_height)
    313         {
    314             uint32_t *attr = dp->cv->attr + line * dp->cv->width;
    315 
    316             for(x = 0; x < dp->drv.p->width; x += dp->drv.p->font_width)
    317                 {
    318                     uint16_t bg = _cucul_argb32_to_rgb12bg(*attr++);
    319                     glDisable(GL_TEXTURE_2D);
    320                     glColor3b(((bg & 0xf00) >> 8) * 8,
    321                               ((bg & 0x0f0) >> 4) * 8,
    322                               (bg & 0x00f) * 8);
    323                     glBegin(GL_QUADS);
    324                     glVertex2f(x, y);
    325                     glVertex2f(x + dp->drv.p->font_width, y);
    326                     glVertex2f(x + dp->drv.p->font_width,
    327                                y + dp->drv.p->font_height);
    328                     glVertex2f(x, y + dp->drv.p->font_height);
    329                     glEnd();
    330                 }
    331 
    332             line++;
    333         }
     308    {
     309        uint32_t *attr = dp->cv->attr + line * dp->cv->width;
     310
     311        for(x = 0; x < dp->drv.p->width; x += dp->drv.p->font_width)
     312        {
     313            uint16_t bg = _cucul_argb32_to_rgb12bg(*attr++);
     314            glDisable(GL_TEXTURE_2D);
     315            glColor3b(((bg & 0xf00) >> 8) * 8,
     316                      ((bg & 0x0f0) >> 4) * 8,
     317                      (bg & 0x00f) * 8);
     318            glBegin(GL_QUADS);
     319            glVertex2f(x, y);
     320            glVertex2f(x + dp->drv.p->font_width, y);
     321            glVertex2f(x + dp->drv.p->font_width,
     322                       y + dp->drv.p->font_height);
     323            glVertex2f(x, y + dp->drv.p->font_height);
     324            glEnd();
     325        }
     326
     327        line++;
     328    }
    334329
    335330    /* 2nd pass, avoids changing render state too much */
     
    340335    line = 0;
    341336    for(y = 0; y < dp->drv.p->height; y += dp->drv.p->font_height)
    342         {
    343             uint32_t *attr = dp->cv->attr + line * dp->cv->width;
    344             uint32_t *chars = dp->cv->chars + line * dp->cv->width;
    345 
    346             for(x = 0; x < dp->drv.p->width; x += dp->drv.p->font_width)
     337    {
     338        uint32_t *attr = dp->cv->attr + line * dp->cv->width;
     339        uint32_t *chars = dp->cv->chars + line * dp->cv->width;
     340
     341        for(x = 0; x < dp->drv.p->width; x += dp->drv.p->font_width)
     342        {
     343            uint32_t cv = *chars++;
     344
     345            if(cv > 0x00000020 && cv < 0x00000080)
     346            {
     347                uint16_t fg = _cucul_argb32_to_rgb12fg(*attr);
     348                glBindTexture(GL_TEXTURE_2D, dp->drv.p->id[cv - 32]);
     349                glColor3b(((fg & 0xf00) >> 8) * 8,
     350                          ((fg & 0x0f0) >> 4) * 8,
     351                          (fg & 0x00f) * 8);
     352                glBegin(GL_QUADS);
     353                glTexCoord2f(0, dp->drv.p->sh);
     354                glVertex2f(x, y);
     355                glTexCoord2f(dp->drv.p->sw, dp->drv.p->sh);
     356                glVertex2f(x + dp->drv.p->font_width, y);
     357                glTexCoord2f(dp->drv.p->sw, 0);
     358                glVertex2f(x + dp->drv.p->font_width,
     359                           y + dp->drv.p->font_height);
     360                glTexCoord2f(0, 0);
     361                glVertex2f(x, y + dp->drv.p->font_height);
     362                glEnd();
     363            }
     364            else if(cv!=' ')
     365            {
     366                switch(cv)
    347367                {
    348                     uint32_t cv = *chars++;
    349 
    350                     if(cv > 0x00000020 && cv < 0x00000080)
    351                         {
    352                             uint16_t fg = _cucul_argb32_to_rgb12fg(*attr);
    353                             glBindTexture(GL_TEXTURE_2D, dp->drv.p->id[cv - 32]);
    354                             glColor3b(((fg & 0xf00) >> 8) * 8,
    355                                       ((fg & 0x0f0) >> 4) * 8,
    356                                       (fg & 0x00f) * 8);
    357                             glBegin(GL_QUADS);
    358                             glTexCoord2f(0, dp->drv.p->sh);
    359                             glVertex2f(x, y);
    360                             glTexCoord2f(dp->drv.p->sw, dp->drv.p->sh);
    361                             glVertex2f(x + dp->drv.p->font_width, y);
    362                             glTexCoord2f(dp->drv.p->sw, 0);
    363                             glVertex2f(x + dp->drv.p->font_width,
    364                                        y + dp->drv.p->font_height);
    365                             glTexCoord2f(0, 0);
    366                             glVertex2f(x, y + dp->drv.p->font_height);
    367                             glEnd();
    368                         }
    369                     else if(cv!=' ')
    370                         {
    371                             switch(cv)
    372                                 {
    373                                 case 0x00002580: glBindTexture(GL_TEXTURE_2D, dp->drv.p->id_uni[0]); break;
    374                                 case 0x00002584: glBindTexture(GL_TEXTURE_2D, dp->drv.p->id_uni[1]); break;
    375                                 case 0x00002588: glBindTexture(GL_TEXTURE_2D, dp->drv.p->id_uni[2]); break;
    376                                 case 0x0000258c: glBindTexture(GL_TEXTURE_2D, dp->drv.p->id_uni[3]); break;
    377                                 case 0x00002590: glBindTexture(GL_TEXTURE_2D, dp->drv.p->id_uni[4]); break;
    378                                 case 0x00002591: glBindTexture(GL_TEXTURE_2D, dp->drv.p->id_uni[5]); break;
    379                                 case 0x00002592: glBindTexture(GL_TEXTURE_2D, dp->drv.p->id_uni[6]); break;
    380                                 case 0x00002593: glBindTexture(GL_TEXTURE_2D, dp->drv.p->id_uni[7]); break;
    381                                 default:         glBindTexture(GL_TEXTURE_2D, dp->drv.p->id['?' - 32]); break;
    382                                 }
    383 
    384                             uint16_t fg = _cucul_argb32_to_rgb12fg(*attr);
    385                             glColor3b(((fg & 0xf00) >> 8) * 8,
    386                                       ((fg & 0x0f0) >> 4) * 8,
    387                                       (fg & 0x00f) * 8);
    388                             glBegin(GL_QUADS);
    389                             glTexCoord2f(0, dp->drv.p->sh);
    390                             glVertex2f(x, y);
    391                             glTexCoord2f(dp->drv.p->sw, dp->drv.p->sh);
    392                             glVertex2f(x + dp->drv.p->font_width, y);
    393                             glTexCoord2f(dp->drv.p->sw, 0);
    394                             glVertex2f(x + dp->drv.p->font_width,
    395                                        y + dp->drv.p->font_height);
    396                             glTexCoord2f(0, 0);
    397                             glVertex2f(x, y + dp->drv.p->font_height);
    398                             glEnd();
    399 
    400                         }
    401 
    402                     attr++;
     368                case 0x00002580: glBindTexture(GL_TEXTURE_2D, dp->drv.p->id_uni[0]); break;
     369                case 0x00002584: glBindTexture(GL_TEXTURE_2D, dp->drv.p->id_uni[1]); break;
     370                case 0x00002588: glBindTexture(GL_TEXTURE_2D, dp->drv.p->id_uni[2]); break;
     371                case 0x0000258c: glBindTexture(GL_TEXTURE_2D, dp->drv.p->id_uni[3]); break;
     372                case 0x00002590: glBindTexture(GL_TEXTURE_2D, dp->drv.p->id_uni[4]); break;
     373                case 0x00002591: glBindTexture(GL_TEXTURE_2D, dp->drv.p->id_uni[5]); break;
     374                case 0x00002592: glBindTexture(GL_TEXTURE_2D, dp->drv.p->id_uni[6]); break;
     375                case 0x00002593: glBindTexture(GL_TEXTURE_2D, dp->drv.p->id_uni[7]); break;
     376                default:         glBindTexture(GL_TEXTURE_2D, dp->drv.p->id['?' - 32]); break;
    403377                }
    404             line++;
    405         }
     378
     379                uint16_t fg = _cucul_argb32_to_rgb12fg(*attr);
     380                glColor3b(((fg & 0xf00) >> 8) * 8,
     381                          ((fg & 0x0f0) >> 4) * 8,
     382                          (fg & 0x00f) * 8);
     383                glBegin(GL_QUADS);
     384                glTexCoord2f(0, dp->drv.p->sh);
     385                glVertex2f(x, y);
     386                glTexCoord2f(dp->drv.p->sw, dp->drv.p->sh);
     387                glVertex2f(x + dp->drv.p->font_width, y);
     388                glTexCoord2f(dp->drv.p->sw, 0);
     389                glVertex2f(x + dp->drv.p->font_width,
     390                           y + dp->drv.p->font_height);
     391                glTexCoord2f(0, 0);
     392                glVertex2f(x, y + dp->drv.p->font_height);
     393                glEnd();
     394
     395            }
     396
     397            attr++;
     398        }
     399        line++;
     400    }
    406401    glDisable(GL_BLEND);
    407402    glDisable(GL_TEXTURE_2D);
     
    440435#ifdef HAVE_GLUTCLOSEFUNC
    441436    if(dp->drv.p->close)
    442         {
    443             dp->drv.p->close = 0;
    444             ev->type = CACA_EVENT_QUIT;
    445             return 1;
    446         }
     437    {
     438        dp->drv.p->close = 0;
     439        ev->type = CACA_EVENT_QUIT;
     440        return 1;
     441    }
    447442#endif
    448443
    449444    if(dp->resize.resized)
    450         {
    451             ev->type = CACA_EVENT_RESIZE;
    452             ev->data.resize.w = dp->cv->width;
    453             ev->data.resize.h = dp->cv->height;
    454             return 1;
    455         }
     445    {
     446        ev->type = CACA_EVENT_RESIZE;
     447        ev->data.resize.w = dp->cv->width;
     448        ev->data.resize.h = dp->cv->height;
     449        return 1;
     450    }
    456451
    457452    if(dp->drv.p->mouse_changed)
    458         {
    459             ev->type = CACA_EVENT_MOUSE_MOTION;
    460             ev->data.mouse.x = dp->mouse.x;
    461             ev->data.mouse.y = dp->mouse.y;
    462             dp->drv.p->mouse_changed = 0;
    463 
    464             if(dp->drv.p->mouse_clicked)
    465                 {
    466                     _push_event(dp, ev);
    467                     ev->type = CACA_EVENT_MOUSE_PRESS;
    468                     ev->data.mouse.button = dp->drv.p->mouse_button;
    469                     dp->drv.p->mouse_clicked = 0;
    470                 }
    471 
    472             return 1;
    473         }
     453    {
     454        ev->type = CACA_EVENT_MOUSE_MOTION;
     455        ev->data.mouse.x = dp->mouse.x;
     456        ev->data.mouse.y = dp->mouse.y;
     457        dp->drv.p->mouse_changed = 0;
     458
     459        if(dp->drv.p->mouse_clicked)
     460        {
     461            _push_event(dp, ev);
     462            ev->type = CACA_EVENT_MOUSE_PRESS;
     463            ev->data.mouse.button = dp->drv.p->mouse_button;
     464            dp->drv.p->mouse_clicked = 0;
     465        }
     466
     467        return 1;
     468    }
    474469
    475470    if(dp->drv.p->key != 0)
    476         {
    477             ev->type = CACA_EVENT_KEY_PRESS;
    478             ev->data.key.ch = dp->drv.p->key;
    479             ev->data.key.utf32 = (uint32_t)dp->drv.p->key;
    480             ev->data.key.utf8[0] = dp->drv.p->key;
    481             ev->data.key.utf8[1] = '\0';
    482             dp->drv.p->key = 0;
    483             return 1;
    484         }
     471    {
     472        ev->type = CACA_EVENT_KEY_PRESS;
     473        ev->data.key.ch = dp->drv.p->key;
     474        ev->data.key.utf32 = (uint32_t)dp->drv.p->key;
     475        ev->data.key.utf8[0] = dp->drv.p->key;
     476        ev->data.key.utf8[1] = '\0';
     477        dp->drv.p->key = 0;
     478        return 1;
     479    }
    485480
    486481    if(dp->drv.p->special_key != 0)
    487         {
    488             switch(dp->drv.p->special_key)
    489                 {
    490                 case GLUT_KEY_F1 : ev->data.key.ch = CACA_KEY_F1; break;
    491                 case GLUT_KEY_F2 : ev->data.key.ch = CACA_KEY_F2; break;
    492                 case GLUT_KEY_F3 : ev->data.key.ch = CACA_KEY_F3; break;
    493                 case GLUT_KEY_F4 : ev->data.key.ch = CACA_KEY_F4; break;
    494                 case GLUT_KEY_F5 : ev->data.key.ch = CACA_KEY_F5; break;
    495                 case GLUT_KEY_F6 : ev->data.key.ch = CACA_KEY_F6; break;
    496                 case GLUT_KEY_F7 : ev->data.key.ch = CACA_KEY_F7; break;
    497                 case GLUT_KEY_F8 : ev->data.key.ch = CACA_KEY_F8; break;
    498                 case GLUT_KEY_F9 : ev->data.key.ch = CACA_KEY_F9; break;
    499                 case GLUT_KEY_F10: ev->data.key.ch = CACA_KEY_F10; break;
    500                 case GLUT_KEY_F11: ev->data.key.ch = CACA_KEY_F11; break;
    501                 case GLUT_KEY_F12: ev->data.key.ch = CACA_KEY_F12; break;
    502                 case GLUT_KEY_LEFT : ev->data.key.ch = CACA_KEY_LEFT; break;
    503                 case GLUT_KEY_RIGHT: ev->data.key.ch = CACA_KEY_RIGHT; break;
    504                 case GLUT_KEY_UP   : ev->data.key.ch = CACA_KEY_UP; break;
    505                 case GLUT_KEY_DOWN : ev->data.key.ch = CACA_KEY_DOWN; break;
    506                 case GLUT_KEY_PAGE_UP : ev->data.key.ch = CACA_KEY_PAGEUP; break;
    507                 case GLUT_KEY_PAGE_DOWN  : ev->data.key.ch = CACA_KEY_PAGEDOWN;
    508                     break;
    509                 case GLUT_KEY_HOME : ev->data.key.ch = CACA_KEY_HOME; break;
    510                 case GLUT_KEY_END : ev->data.key.ch = CACA_KEY_END; break;
    511                 case GLUT_KEY_INSERT : ev->data.key.ch = CACA_KEY_INSERT; break;
    512 
    513                 default: ev->type = CACA_EVENT_NONE; return 0;
    514                 }
    515 
    516             ev->type = CACA_EVENT_KEY_PRESS;
    517             ev->data.key.utf32 = 0;
    518             ev->data.key.utf8[0] = '\0';
    519 
    520             dp->drv.p->special_key = 0;
    521             return 1;
    522         }
     482    {
     483        switch(dp->drv.p->special_key)
     484        {
     485            case GLUT_KEY_F1 : ev->data.key.ch = CACA_KEY_F1; break;
     486            case GLUT_KEY_F2 : ev->data.key.ch = CACA_KEY_F2; break;
     487            case GLUT_KEY_F3 : ev->data.key.ch = CACA_KEY_F3; break;
     488            case GLUT_KEY_F4 : ev->data.key.ch = CACA_KEY_F4; break;
     489            case GLUT_KEY_F5 : ev->data.key.ch = CACA_KEY_F5; break;
     490            case GLUT_KEY_F6 : ev->data.key.ch = CACA_KEY_F6; break;
     491            case GLUT_KEY_F7 : ev->data.key.ch = CACA_KEY_F7; break;
     492            case GLUT_KEY_F8 : ev->data.key.ch = CACA_KEY_F8; break;
     493            case GLUT_KEY_F9 : ev->data.key.ch = CACA_KEY_F9; break;
     494            case GLUT_KEY_F10: ev->data.key.ch = CACA_KEY_F10; break;
     495            case GLUT_KEY_F11: ev->data.key.ch = CACA_KEY_F11; break;
     496            case GLUT_KEY_F12: ev->data.key.ch = CACA_KEY_F12; break;
     497            case GLUT_KEY_LEFT : ev->data.key.ch = CACA_KEY_LEFT; break;
     498            case GLUT_KEY_RIGHT: ev->data.key.ch = CACA_KEY_RIGHT; break;
     499            case GLUT_KEY_UP   : ev->data.key.ch = CACA_KEY_UP; break;
     500            case GLUT_KEY_DOWN : ev->data.key.ch = CACA_KEY_DOWN; break;
     501            case GLUT_KEY_PAGE_UP : ev->data.key.ch = CACA_KEY_PAGEUP; break;
     502            case GLUT_KEY_PAGE_DOWN  : ev->data.key.ch = CACA_KEY_PAGEDOWN;
     503                break;
     504            case GLUT_KEY_HOME : ev->data.key.ch = CACA_KEY_HOME; break;
     505            case GLUT_KEY_END : ev->data.key.ch = CACA_KEY_END; break;
     506            case GLUT_KEY_INSERT : ev->data.key.ch = CACA_KEY_INSERT; break;
     507
     508            default: ev->type = CACA_EVENT_NONE; return 0;
     509        }
     510
     511        ev->type = CACA_EVENT_KEY_PRESS;
     512        ev->data.key.utf32 = 0;
     513        ev->data.key.utf8[0] = '\0';
     514
     515        dp->drv.p->special_key = 0;
     516        return 1;
     517    }
    523518
    524519    ev->type = CACA_EVENT_NONE;
     
    558553
    559554    if(dp->drv.p->bit) /* Do not handle reshaping at the first time */
    560         {
    561             dp->drv.p->new_width = w;
    562             dp->drv.p->new_height = h;
    563 
    564             dp->resize.w = w / dp->drv.p->font_width;
    565             dp->resize.h = (h / dp->drv.p->font_height) + 1;
    566 
    567             dp->resize.resized = 1;
    568         }
     555    {
     556        dp->drv.p->new_width = w;
     557        dp->drv.p->new_height = h;
     558
     559        dp->resize.w = w / dp->drv.p->font_width;
     560        dp->resize.h = (h / dp->drv.p->font_height) + 1;
     561
     562        dp->resize.resized = 1;
     563    }
    569564    else
    570565        dp->drv.p->bit = 1;
Note: See TracChangeset for help on using the changeset viewer.