Ticket #4191: 4191-v1.patch
| File 4191-v1.patch, 5.4 KB (added by , 18 years ago) |
|---|
-
configure
884 884 xvmc_opengl 885 885 xvmc_vld 886 886 dvdv 887 fribidi 887 888 ' 888 889 889 890 MYTHTV_LIST=' … … 2375 2376 check_foo_config freetype2 freetype ft2build.h FT_Init_FreeType 2376 2377 2377 2378 ########################################## 2379 # fribidi check 2380 2381 disable fribidi 2382 FRIBIDI_CONFIG="pkg-config fribidi" 2383 if ( pkg-config fribidi --version ) >/dev/null 2>&1 ; then 2384 _fribidi_version=`${FRIBIDI_CONFIG} --version | sed 's/[^0-9]//g'` 2385 if test "$_fribidi_version" -lt 022 ; then 2386 disable fribidi 2387 else 2388 check_cc `${FRIBIDI_CONFIG} --cflags` `${FRIBIDI_CONFIG} --libs` << EOF && enable fribidi 2389 #include <stdio.h> 2390 #include <fribidi/fribidi.h> 2391 int main() 2392 { 2393 if (fribidi_parse_charset("UTF-8") != FRIBIDI_CHAR_SET_UTF8) 2394 { 2395 printf("Fribidi headers are not consistents with the library!\n"); 2396 return 1; 2397 } 2398 return 0; 2399 } 2400 EOF 2401 fi 2402 fi 2403 ########################################## 2378 2404 # SDL check 2379 2405 2380 2406 disable sdl_too_old … … 2948 2974 if test x"$mingw32" = x"yes" -o x"$targetos" = x"cygwin" ; then 2949 2975 echo "DirectX ${directx-no}" 2950 2976 fi 2977 echo "Fribidi formatting ${fribidi}" 2951 2978 echo 2952 2979 fi 2953 2980 … … 3038 3065 echo "FREETYPE_CFLAGS=`freetype-config --cflags`" >> $MYTH_CONFIG_MAK 3039 3066 echo "FREETYPE_LIBS=`freetype-config --libs`" >> $MYTH_CONFIG_MAK 3040 3067 fi 3068 if enabled fribidi; then 3069 echo "FRIBIDI_LIBS=`${FRIBIDI_CONFIG} --libs`" >> $MYTH_CONFIG_MAK 3070 echo "FRIBIDI_CFLAGS=`${FRIBIDI_CONFIG} --cflags`" >> $MYTH_CONFIG_MAK 3071 fi 3041 3072 if enabled sdl; then 3042 3073 echo "SDL_LIBS=`"${SDL_CONFIG}" --libs`" >> $MYTH_CONFIG_MAK 3043 3074 echo "SDL_CFLAGS=`"${SDL_CONFIG}" --cflags`" >> $MYTH_CONFIG_MAK -
libs/libmythtv/osdtypes.cpp
16 16 #include "mythcontext.h" 17 17 #include "mythdialogs.h" 18 18 19 #ifdef USING_FRIBIDI 20 #include "fribidi/fribidi.h" 21 #include <qtextcodec.h> 22 #endif // USING_FRIBIDI 23 19 24 /// Shared OSD image cache 20 25 OSDImageCache OSDTypeImage::c_cache; 21 26 … … 750 755 m_altfont = font; 751 756 } 752 757 753 QString OSDTypeText:: ConvertFromRtoL(const QString &text)758 QString OSDTypeText::BasicConvertFromRtoL(const QString &text) 754 759 { 755 760 QStringList rtl_string_composer; 756 761 bool handle_rtl = false; … … 790 795 } 791 796 } 792 797 793 return QDeepCopy<QString>(rtl_string_composer.join("")); 798 QString output = rtl_string_composer.join(""); 799 800 return QDeepCopy<QString>(output); 794 801 } 795 802 803 QString OSDTypeText::ConvertFromRtoL(const QString &text) const 804 { 805 QString output = BasicConvertFromRtoL(text); 806 807 #ifdef USING_FRIBIDI 808 QMutexLocker locker(&fribidi_lock); 809 if (!codeci) 810 codeci = QTextCodec::codecForName("utf8"); 811 812 QCString temp = codeci->fromUnicode(output); 813 814 FriBidiCharType base; 815 size_t len; 816 817 bool fribidi_flip_commas = true; 818 base = (fribidi_flip_commas) ? FRIBIDI_TYPE_ON : FRIBIDI_TYPE_L; 819 820 const char *ip = temp; 821 FriBidiChar logical[strlen(ip) + 1], visual[strlen(ip) + 1]; 822 823 int char_set_num = fribidi_parse_charset("UTF-8"); 824 825 len = fribidi_charset_to_unicode( 826 (FriBidiCharSet) char_set_num, ip, strlen(ip), logical); 827 828 bool log2vis = fribidi_log2vis( 829 logical, len, &base, visual, NULL, NULL, NULL); // output 830 831 if (log2vis) 832 len = fribidi_remove_bidi_marks(visual, len, NULL, NULL, NULL); 833 834 output = ""; 835 for (size_t i = 0; i < len ; i++) 836 output += QChar(visual[i]); 837 #endif // USING_FRIBIDI 838 839 return output; 840 } 841 796 842 void OSDTypeText::SetText(const QString &text) 797 843 { 798 844 QMutexLocker locker(&m_lock); -
libs/libmythtv/libmythtv.pro
248 248 using_ivtv:SOURCES += ivtvdecoder.cpp 249 249 250 250 # On screen display (video output overlay) 251 using_fribidi:DEFINES += USING_FRIBIDI 251 252 HEADERS += osd.h osdtypes.h 252 253 HEADERS += osdsurface.h osdlistbtntype.h 253 254 HEADERS += osdimagecache.h osdtypeteletext.h -
libs/libmythtv/osdtypes.h
238 238 void SetButton(bool is_button) { m_button = is_button; } 239 239 void SetEntryNum(int entrynum) { m_entrynum = entrynum; } 240 240 241 static QString ConvertFromRtoL(const QString &text); 241 QString ConvertFromRtoL(const QString &text) const; 242 243 static QString BasicConvertFromRtoL(const QString &text); 244 242 245 protected: 243 246 ~OSDTypeText(); 244 247 … … 288 291 mutable QString m_draw_info_str; 289 292 mutable uint m_draw_info_len; 290 293 mutable vector<DrawInfo> m_draw_info; 294 295 mutable QMutex fribidi_lock; 296 mutable QTextCodec *codeci; 291 297 }; 292 298 293 299 class OSDTypeImage : public OSDType -
settings.pro
99 99 EXTRA_LIBS += $$CONFIG_XRANDR_LIBS 100 100 EXTRA_LIBS += $$CONFIG_XVMC_LIBS 101 101 EXTRA_LIBS += $$CONFIG_OPENGL_LIBS 102 EXTRA_LIBS += $$FRIBIDI_LIBS 102 103 103 104 LIRC_LIBS = $$CONFIG_LIRC_LIBS
