]> git.sesse.net Git - vlc/commitdiff
* modules/misc/freetype.c: don't use the pitch of the picture to calculate the text...
authorGildas Bazin <gbazin@videolan.org>
Wed, 29 Oct 2003 12:23:51 +0000 (12:23 +0000)
committerGildas Bazin <gbazin@videolan.org>
Wed, 29 Oct 2003 12:23:51 +0000 (12:23 +0000)
* modules/video_output/directx/events.c: fixed key modifiers detection.
* modules/gui/wxwindows/*: removed the sorted flag from a couple of comboboxes.

modules/gui/wxwindows/preferences_widgets.cpp
modules/gui/wxwindows/subtitles.cpp
modules/misc/freetype.c
modules/video_output/directx/events.c

index db7f894dd099756f54b6e886f16cdb57fe672acd..a27300072d06572b942649ee2b861de064bec638 100644 (file)
@@ -2,7 +2,7 @@
  * preferences_widgets.cpp : wxWindows plugin for vlc
  *****************************************************************************
  * Copyright (C) 2000-2001 VideoLAN
- * $Id: preferences_widgets.cpp,v 1.6 2003/10/28 21:59:13 gbazin Exp $
+ * $Id: preferences_widgets.cpp,v 1.7 2003/10/29 12:23:50 gbazin Exp $
  *
  * Authors: Gildas Bazin <gbazin@netcourrier.com>
  *          Sigmund Augdal <sigmunau@idi.ntnu.no>
@@ -146,8 +146,7 @@ KeyConfigControl::KeyConfigControl( module_config_t *p_item, wxWindow *parent )
     shift = new wxCheckBox( this, -1, wxU(_("Shift")) );
     shift->SetValue( p_item->i_value & KEY_MODIFIER_SHIFT );
     combo = new wxComboBox( this, -1, wxU("f"), wxDefaultPosition,
-                            wxDefaultSize, 0, NULL,
-                            wxCB_READONLY | wxCB_SORT );
+                            wxDefaultSize, 0, NULL, wxCB_READONLY );
     for( unsigned int i = 0; i < sizeof(keys)/sizeof(key_descriptor_s); i++ )
     {
         /* HPReg says casting the int to void * is fine */
@@ -290,7 +289,7 @@ StringListConfigControl::StringListConfigControl( module_config_t *p_item,
     sizer->Add( label, 1, wxALIGN_CENTER_VERTICAL | wxALL, 5 );
     combo = new wxComboBox( this, -1, wxU(p_item->psz_value),
                             wxDefaultPosition, wxDefaultSize,
-                            0, NULL, wxCB_READONLY|wxCB_SORT );
+                            0, NULL, wxCB_READONLY );
 
     /* build a list of available options */
     for( int i_index = 0; p_item->ppsz_list[i_index];
index e8e8d74a385d7da5b20f816004a55e400df0872a..b9bc995b45a388ec08b6234d98165d400fbcfd01 100644 (file)
@@ -2,7 +2,7 @@
  * subtitles.cpp : wxWindows plugin for vlc
  *****************************************************************************
  * Copyright (C) 2000-2001 VideoLAN
- * $Id: subtitles.cpp,v 1.6 2003/08/27 11:53:26 gbazin Exp $
+ * $Id: subtitles.cpp,v 1.7 2003/10/29 12:23:50 gbazin Exp $
  *
  * Authors: Gildas Bazin <gbazin@netcourrier.com>
  *
@@ -111,7 +111,7 @@ SubsFileDialog::SubsFileDialog( intf_thread_t *_p_intf, wxWindow* _p_parent ):
             new wxStaticText(panel, -1, wxU(p_item->psz_text));
         encoding_combo = new wxComboBox( panel, -1, wxU(p_item->psz_value),
                                          wxDefaultPosition, wxDefaultSize,
-                                         0, NULL, wxCB_READONLY | wxCB_SORT );
+                                         0, NULL, wxCB_READONLY );
 
         /* build a list of available options */
         for( int i_index = 0; p_item->ppsz_list && p_item->ppsz_list[i_index];
index c87f466325b8133a3c9bcc423cdbc4eb258bb09f..ae243dbc22fb5c80ac4eef47a42d6bbd9ec3c135 100644 (file)
@@ -2,7 +2,7 @@
  * freetype.c : Put text on the video, using freetype2
  *****************************************************************************
  * Copyright (C) 2002, 2003 VideoLAN
- * $Id: freetype.c,v 1.29 2003/10/29 00:04:56 sigmunau Exp $
+ * $Id: freetype.c,v 1.30 2003/10/29 12:23:50 gbazin Exp $
  *
  * Authors: Sigmund Augdal <sigmunau@idi.ntnu.no>
  *
@@ -359,7 +359,8 @@ static void RenderI420( vout_thread_t *p_vout, picture_t *p_pic,
         for( i_plane = 0 ; i_plane < p_pic->i_planes ; i_plane++ )
         {
             uint8_t *p_in;
-            int i_pitch = p_pic->p[ i_plane ].i_pitch;
+            int i_pic_pitch = p_pic->p[ i_plane ].i_pitch;
+            int i_pic_width = p_pic->p[ i_plane ].i_visible_pitch;
 
             p_in = p_pic->p[ i_plane ].p_pixels;
 
@@ -377,7 +378,7 @@ static void RenderI420( vout_thread_t *p_vout, picture_t *p_pic,
                 pen_y += p_vout->p_text_renderer_data->p_face->size->metrics.ascender >> 6;
                 if ( p_string->i_flags & OSD_ALIGN_RIGHT )
                 {
-                    pen_x = i_pitch - p_line->i_width
+                    pen_x = i_pic_width - p_line->i_width
                         - p_string->i_x_margin;
                 }
                 else if ( p_string->i_flags & OSD_ALIGN_LEFT )
@@ -386,7 +387,7 @@ static void RenderI420( vout_thread_t *p_vout, picture_t *p_pic,
                 }
                 else
                 {
-                    pen_x = i_pitch / 2 - p_line->i_width / 2
+                    pen_x = i_pic_width / 2 - p_line->i_width / 2
                         + p_string->i_x_margin;
                 }
 
@@ -394,7 +395,7 @@ static void RenderI420( vout_thread_t *p_vout, picture_t *p_pic,
                 {
                     FT_BitmapGlyph p_glyph = p_line->pp_glyphs[ i ];
 #define alpha p_vout->p_text_renderer_data->pi_gamma[ p_glyph->bitmap.buffer[ x + y * p_glyph->bitmap.width ] ]
-#define pixel p_in[ ( p_line->p_glyph_pos[ i ].y + pen_y + y - p_glyph->top ) * i_pitch + x + pen_x + p_line->p_glyph_pos[ i ].x + p_glyph->left ]
+#define pixel p_in[ ( p_line->p_glyph_pos[ i ].y + pen_y + y - p_glyph->top ) * i_pic_pitch + x + pen_x + p_line->p_glyph_pos[ i ].x + p_glyph->left ]
                     for(y = 0; y < p_glyph->bitmap.rows; y++ )
                     {
                         for( x = 0; x < p_glyph->bitmap.width; x++ )
@@ -436,7 +437,7 @@ static void RenderI420( vout_thread_t *p_vout, picture_t *p_pic,
                 pen_y += p_vout->p_text_renderer_data->p_face->size->metrics.ascender >> 7;
                 if ( p_string->i_flags & OSD_ALIGN_RIGHT )
                 {
-                    pen_x = i_pitch - ( p_line->i_width >> 1 )
+                    pen_x = i_pic_width - ( p_line->i_width >> 1 )
                         - ( p_string->i_x_margin >> 1 );
                 }
                 else if ( p_string->i_flags & OSD_ALIGN_LEFT )
@@ -445,7 +446,7 @@ static void RenderI420( vout_thread_t *p_vout, picture_t *p_pic,
                 }
                 else
                 {
-                    pen_x = i_pitch / 2 - p_line->i_width / 4
+                    pen_x = i_pic_width / 2 - p_line->i_width / 4
                         + p_string->i_x_margin / 2;
                 }
 
@@ -453,7 +454,7 @@ static void RenderI420( vout_thread_t *p_vout, picture_t *p_pic,
                 {
                     FT_BitmapGlyph p_glyph = p_line->pp_glyphs[ i ];
 #define alpha p_vout->p_text_renderer_data->pi_gamma[ p_glyph->bitmap.buffer[ ( x + y * p_glyph->bitmap.width ) ] ]
-#define pixel p_in[ ( ( p_line->p_glyph_pos[ i ].y >> 1 ) + pen_y + ( y >> 1 ) -  ( p_glyph->top >> 1 ) ) * i_pitch + ( x >> 1 ) + pen_x + ( p_line->p_glyph_pos[ i ].x >> 1 ) + ( p_glyph->left >>1) ]
+#define pixel p_in[ ( ( p_line->p_glyph_pos[ i ].y >> 1 ) + pen_y + ( y >> 1 ) -  ( p_glyph->top >> 1 ) ) * i_pic_pitch + ( x >> 1 ) + pen_x + ( p_line->p_glyph_pos[ i ].x >> 1 ) + ( p_glyph->left >>1) ]
                     for( y = 0; y < p_glyph->bitmap.rows; y+=2 )
                     {
                         for( x = 0; x < p_glyph->bitmap.width; x+=2 )
@@ -485,8 +486,9 @@ static void RenderYUY2( vout_thread_t *p_vout, picture_t *p_pic,
          p_line = p_line->p_next )
     {
         uint8_t *p_in;
-        int i_pitch = p_pic->p[0].i_pitch;
-        
+        int i_pic_pitch = p_pic->p[0].i_pitch;
+        int i_pic_width = p_pic->p[0].i_visible_pitch;
+
         p_in = p_pic->p[0].p_pixels;
         
         if ( p_string->i_flags & OSD_ALIGN_BOTTOM )
@@ -501,7 +503,7 @@ static void RenderYUY2( vout_thread_t *p_vout, picture_t *p_pic,
         pen_y += p_vout->p_text_renderer_data->p_face->size->metrics.ascender >> 6;
         if ( p_string->i_flags & OSD_ALIGN_RIGHT )
         {
-            pen_x = i_pitch - p_line->i_width
+            pen_x = i_pic_width - p_line->i_width
                 - p_string->i_x_margin;
         }
         else if ( p_string->i_flags & OSD_ALIGN_LEFT )
@@ -510,14 +512,14 @@ static void RenderYUY2( vout_thread_t *p_vout, picture_t *p_pic,
         }
         else
         {
-            pen_x = i_pitch / 2 /2 - p_line->i_width / 2 + p_string->i_x_margin;
+            pen_x = i_pic_width / 2 /2 - p_line->i_width / 2 + p_string->i_x_margin;
         }
         
         for( i = 0; p_line->pp_glyphs[i] != NULL; i++ )
         {
             FT_BitmapGlyph p_glyph = p_line->pp_glyphs[ i ];
 #define alpha p_vout->p_text_renderer_data->pi_gamma[ p_glyph->bitmap.buffer[ x + y * p_glyph->bitmap.width ] ]
-#define pixel p_in[ ( p_line->p_glyph_pos[ i ].y + pen_y + y - p_glyph->top ) * i_pitch + 2 * ( x + pen_x + p_line->p_glyph_pos[ i ].x + p_glyph->left ) ]
+#define pixel p_in[ ( p_line->p_glyph_pos[ i ].y + pen_y + y - p_glyph->top ) * i_pic_pitch + 2 * ( x + pen_x + p_line->p_glyph_pos[ i ].x + p_glyph->left ) ]
             for(y = 0; y < p_glyph->bitmap.rows; y++ )
             {
                 for( x = 0; x < p_glyph->bitmap.width; x++ )
@@ -563,8 +565,9 @@ static void RenderRV32( vout_thread_t *p_vout, picture_t *p_pic,
     for( p_line = p_subpic->p_sys->p_lines; p_line != NULL; p_line = p_line->p_next )
     {
         uint8_t *p_in;
-        int i_pitch = p_pic->p[ i_plane ].i_pitch;
-        
+        int i_pic_pitch = p_pic->p[ i_plane ].i_pitch;
+        int i_pic_width = p_pic->p[ i_plane ].i_visible_pitch;
+
         p_in = p_pic->p[ i_plane ].p_pixels;
         
         if ( p_string->i_flags & OSD_ALIGN_BOTTOM )
@@ -579,7 +582,7 @@ static void RenderRV32( vout_thread_t *p_vout, picture_t *p_pic,
         pen_y += p_vout->p_text_renderer_data->p_face->size->metrics.ascender >> 6;
         if ( p_string->i_flags & OSD_ALIGN_RIGHT )
         {
-            pen_x = i_pitch - p_line->i_width
+            pen_x = i_pic_width - p_line->i_width
                 - p_string->i_x_margin;
         }
         else if ( p_string->i_flags & OSD_ALIGN_LEFT )
@@ -588,7 +591,7 @@ static void RenderRV32( vout_thread_t *p_vout, picture_t *p_pic,
         }
         else
         {
-            pen_x = i_pitch / 2 / 4 - p_line->i_width / 2
+            pen_x = i_pic_width / 2 / 4 - p_line->i_width / 2
                 + p_string->i_x_margin;
         }
         
@@ -596,7 +599,7 @@ static void RenderRV32( vout_thread_t *p_vout, picture_t *p_pic,
         {
             FT_BitmapGlyph p_glyph = p_line->pp_glyphs[ i ];
 #define alpha p_vout->p_text_renderer_data->pi_gamma[ p_glyph->bitmap.buffer[ x + y * p_glyph->bitmap.width ] ]
-#define pixel( c ) p_in[ ( p_line->p_glyph_pos[ i ].y + pen_y + y - p_glyph->top ) * i_pitch + ( x + pen_x + p_line->p_glyph_pos[ i ].x + p_glyph->left ) * 4 + c ]
+#define pixel( c ) p_in[ ( p_line->p_glyph_pos[ i ].y + pen_y + y - p_glyph->top ) * i_pic_pitch + ( x + pen_x + p_line->p_glyph_pos[ i ].x + p_glyph->left ) * 4 + c ]
             for(y = 0; y < p_glyph->bitmap.rows; y++ )
             {
                 for( x = 0; x < p_glyph->bitmap.width; x++ )
index 0546eb36e9b348f450cda0dd1a535da0db016d86..62d78cc3d463d6422ed0581feddc8c42664110e8 100644 (file)
@@ -2,7 +2,7 @@
  * events.c: Windows DirectX video output events handler
  *****************************************************************************
  * Copyright (C) 2001 VideoLAN
- * $Id: events.c,v 1.26 2003/10/29 01:33:27 gbazin Exp $
+ * $Id: events.c,v 1.27 2003/10/29 12:23:51 gbazin Exp $
  *
  * Authors: Gildas Bazin <gbazin@netcourrier.com>
  *
@@ -28,6 +28,7 @@
  *****************************************************************************/
 #include <errno.h>                                                 /* ENOMEM */
 #include <stdlib.h>                                                /* free() */
+#include <ctype.h>                                              /* tolower() */
 #include <string.h>                                            /* strerror() */
 
 #include <vlc/vlc.h>
@@ -194,16 +195,15 @@ void DirectXEventThread( event_thread_t *p_event )
             break;
 
         case WM_KEYDOWN:
-            /* the key events are first processed here. The next
-             * message processed by this main message loop will be the
-             * char translation of the key event */
-        case WM_CHAR:
-            if( msg.message == WM_KEYDOWN )
+            /* The key events are first processed here and not translated
+             * into WM_CHAR events because we need to know the status of the
+             * modifier keys. */
+            val.i_int = DirectXConvertKey( msg.wParam );
+            if( !val.i_int )
             {
-                val.i_int = DirectXConvertKey( msg.wParam );
-                TranslateMessage(&msg);
+                /* This appears to be a "normal" (ascii) key */
+                val.i_int = tolower( MapVirtualKey( msg.wParam, 2 ) );
             }
-            else val.i_int = msg.wParam;
 
             if( val.i_int )
             {