Changeset 5fe3825b21ebf4ad84fdc80f3db6436682b0b577

Show
Ignore:
Timestamp:
07/09/08 21:06:37 (3 months ago)
Author:
Laurent Aimar <fenrir@videolan.org>
git-committer:
Laurent Aimar <fenrir@videolan.org> 1220814397 +0200
git-parent:

[07262663b39d86c19d1e8f7dee4abb3978e1704e]

git-author:
Laurent Aimar <fenrir@videolan.org> 1220801888 +0200
Message:

Added support for named color in font parameters.

freetype.c and quartztext.c contain a lot of common code, that should
be factorized.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • modules/misc/freetype.c

    rbe40069 r5fe3825  
    18061806} 
    18071807 
     1808static const struct { 
     1809    const char *psz_name; 
     1810    uint32_t   i_value; 
     1811} p_html_colors[] = { 
     1812    /* Official html colors */ 
     1813    { "Aqua",    0x00FFFF }, 
     1814    { "Black",   0x000000 }, 
     1815    { "Blue",    0x0000FF }, 
     1816    { "Fuchsia", 0xFF00FF }, 
     1817    { "Gray",    0x808080 }, 
     1818    { "Green",   0x008000 }, 
     1819    { "Lime",    0x00FF00 }, 
     1820    { "Maroon",  0x800000 }, 
     1821    { "Navy",    0x000080 }, 
     1822    { "Olive",   0x808000 }, 
     1823    { "Purple",  0x800080 }, 
     1824    { "Red",     0xFF0000 }, 
     1825    { "Silver",  0xC0C0C0 }, 
     1826    { "Teal",    0x008080 }, 
     1827    { "White",   0xFFFFFF }, 
     1828    { "Yellow",  0xFFFF00 }, 
     1829 
     1830    /* Common ones */ 
     1831    { "AliceBlue", 0xF0F8FF }, 
     1832    { "AntiqueWhite", 0xFAEBD7 }, 
     1833    { "Aqua", 0x00FFFF }, 
     1834    { "Aquamarine", 0x7FFFD4 }, 
     1835    { "Azure", 0xF0FFFF }, 
     1836    { "Beige", 0xF5F5DC }, 
     1837    { "Bisque", 0xFFE4C4 }, 
     1838    { "Black", 0x000000 }, 
     1839    { "BlanchedAlmond", 0xFFEBCD }, 
     1840    { "Blue", 0x0000FF }, 
     1841    { "BlueViolet", 0x8A2BE2 }, 
     1842    { "Brown", 0xA52A2A }, 
     1843    { "BurlyWood", 0xDEB887 }, 
     1844    { "CadetBlue", 0x5F9EA0 }, 
     1845    { "Chartreuse", 0x7FFF00 }, 
     1846    { "Chocolate", 0xD2691E }, 
     1847    { "Coral", 0xFF7F50 }, 
     1848    { "CornflowerBlue", 0x6495ED }, 
     1849    { "Cornsilk", 0xFFF8DC }, 
     1850    { "Crimson", 0xDC143C }, 
     1851    { "Cyan", 0x00FFFF }, 
     1852    { "DarkBlue", 0x00008B }, 
     1853    { "DarkCyan", 0x008B8B }, 
     1854    { "DarkGoldenRod", 0xB8860B }, 
     1855    { "DarkGray", 0xA9A9A9 }, 
     1856    { "DarkGrey", 0xA9A9A9 }, 
     1857    { "DarkGreen", 0x006400 }, 
     1858    { "DarkKhaki", 0xBDB76B }, 
     1859    { "DarkMagenta", 0x8B008B }, 
     1860    { "DarkOliveGreen", 0x556B2F }, 
     1861    { "Darkorange", 0xFF8C00 }, 
     1862    { "DarkOrchid", 0x9932CC }, 
     1863    { "DarkRed", 0x8B0000 }, 
     1864    { "DarkSalmon", 0xE9967A }, 
     1865    { "DarkSeaGreen", 0x8FBC8F }, 
     1866    { "DarkSlateBlue", 0x483D8B }, 
     1867    { "DarkSlateGray", 0x2F4F4F }, 
     1868    { "DarkSlateGrey", 0x2F4F4F }, 
     1869    { "DarkTurquoise", 0x00CED1 }, 
     1870    { "DarkViolet", 0x9400D3 }, 
     1871    { "DeepPink", 0xFF1493 }, 
     1872    { "DeepSkyBlue", 0x00BFFF }, 
     1873    { "DimGray", 0x696969 }, 
     1874    { "DimGrey", 0x696969 }, 
     1875    { "DodgerBlue", 0x1E90FF }, 
     1876    { "FireBrick", 0xB22222 }, 
     1877    { "FloralWhite", 0xFFFAF0 }, 
     1878    { "ForestGreen", 0x228B22 }, 
     1879    { "Fuchsia", 0xFF00FF }, 
     1880    { "Gainsboro", 0xDCDCDC }, 
     1881    { "GhostWhite", 0xF8F8FF }, 
     1882    { "Gold", 0xFFD700 }, 
     1883    { "GoldenRod", 0xDAA520 }, 
     1884    { "Gray", 0x808080 }, 
     1885    { "Grey", 0x808080 }, 
     1886    { "Green", 0x008000 }, 
     1887    { "GreenYellow", 0xADFF2F }, 
     1888    { "HoneyDew", 0xF0FFF0 }, 
     1889    { "HotPink", 0xFF69B4 }, 
     1890    { "IndianRed", 0xCD5C5C }, 
     1891    { "Indigo", 0x4B0082 }, 
     1892    { "Ivory", 0xFFFFF0 }, 
     1893    { "Khaki", 0xF0E68C }, 
     1894    { "Lavender", 0xE6E6FA }, 
     1895    { "LavenderBlush", 0xFFF0F5 }, 
     1896    { "LawnGreen", 0x7CFC00 }, 
     1897    { "LemonChiffon", 0xFFFACD }, 
     1898    { "LightBlue", 0xADD8E6 }, 
     1899    { "LightCoral", 0xF08080 }, 
     1900    { "LightCyan", 0xE0FFFF }, 
     1901    { "LightGoldenRodYellow", 0xFAFAD2 }, 
     1902    { "LightGray", 0xD3D3D3 }, 
     1903    { "LightGrey", 0xD3D3D3 }, 
     1904    { "LightGreen", 0x90EE90 }, 
     1905    { "LightPink", 0xFFB6C1 }, 
     1906    { "LightSalmon", 0xFFA07A }, 
     1907    { "LightSeaGreen", 0x20B2AA }, 
     1908    { "LightSkyBlue", 0x87CEFA }, 
     1909    { "LightSlateGray", 0x778899 }, 
     1910    { "LightSlateGrey", 0x778899 }, 
     1911    { "LightSteelBlue", 0xB0C4DE }, 
     1912    { "LightYellow", 0xFFFFE0 }, 
     1913    { "Lime", 0x00FF00 }, 
     1914    { "LimeGreen", 0x32CD32 }, 
     1915    { "Linen", 0xFAF0E6 }, 
     1916    { "Magenta", 0xFF00FF }, 
     1917    { "Maroon", 0x800000 }, 
     1918    { "MediumAquaMarine", 0x66CDAA }, 
     1919    { "MediumBlue", 0x0000CD }, 
     1920    { "MediumOrchid", 0xBA55D3 }, 
     1921    { "MediumPurple", 0x9370D8 }, 
     1922    { "MediumSeaGreen", 0x3CB371 }, 
     1923    { "MediumSlateBlue", 0x7B68EE }, 
     1924    { "MediumSpringGreen", 0x00FA9A }, 
     1925    { "MediumTurquoise", 0x48D1CC }, 
     1926    { "MediumVioletRed", 0xC71585 }, 
     1927    { "MidnightBlue", 0x191970 }, 
     1928    { "MintCream", 0xF5FFFA }, 
     1929    { "MistyRose", 0xFFE4E1 }, 
     1930    { "Moccasin", 0xFFE4B5 }, 
     1931    { "NavajoWhite", 0xFFDEAD }, 
     1932    { "Navy", 0x000080 }, 
     1933    { "OldLace", 0xFDF5E6 }, 
     1934    { "Olive", 0x808000 }, 
     1935    { "OliveDrab", 0x6B8E23 }, 
     1936    { "Orange", 0xFFA500 }, 
     1937    { "OrangeRed", 0xFF4500 }, 
     1938    { "Orchid", 0xDA70D6 }, 
     1939    { "PaleGoldenRod", 0xEEE8AA }, 
     1940    { "PaleGreen", 0x98FB98 }, 
     1941    { "PaleTurquoise", 0xAFEEEE }, 
     1942    { "PaleVioletRed", 0xD87093 }, 
     1943    { "PapayaWhip", 0xFFEFD5 }, 
     1944    { "PeachPuff", 0xFFDAB9 }, 
     1945    { "Peru", 0xCD853F }, 
     1946    { "Pink", 0xFFC0CB }, 
     1947    { "Plum", 0xDDA0DD }, 
     1948    { "PowderBlue", 0xB0E0E6 }, 
     1949    { "Purple", 0x800080 }, 
     1950    { "Red", 0xFF0000 }, 
     1951    { "RosyBrown", 0xBC8F8F }, 
     1952    { "RoyalBlue", 0x4169E1 }, 
     1953    { "SaddleBrown", 0x8B4513 }, 
     1954    { "Salmon", 0xFA8072 }, 
     1955    { "SandyBrown", 0xF4A460 }, 
     1956    { "SeaGreen", 0x2E8B57 }, 
     1957    { "SeaShell", 0xFFF5EE }, 
     1958    { "Sienna", 0xA0522D }, 
     1959    { "Silver", 0xC0C0C0 }, 
     1960    { "SkyBlue", 0x87CEEB }, 
     1961    { "SlateBlue", 0x6A5ACD }, 
     1962    { "SlateGray", 0x708090 }, 
     1963    { "SlateGrey", 0x708090 }, 
     1964    { "Snow", 0xFFFAFA }, 
     1965    { "SpringGreen", 0x00FF7F }, 
     1966    { "SteelBlue", 0x4682B4 }, 
     1967    { "Tan", 0xD2B48C }, 
     1968    { "Teal", 0x008080 }, 
     1969    { "Thistle", 0xD8BFD8 }, 
     1970    { "Tomato", 0xFF6347 }, 
     1971    { "Turquoise", 0x40E0D0 }, 
     1972    { "Violet", 0xEE82EE }, 
     1973    { "Wheat", 0xF5DEB3 }, 
     1974    { "White", 0xFFFFFF }, 
     1975    { "WhiteSmoke", 0xF5F5F5 }, 
     1976    { "Yellow", 0xFFFF00 }, 
     1977    { "YellowGreen", 0x9ACD32 }, 
     1978 
     1979    { NULL, 0 } 
     1980}; 
     1981 
    18081982static int HandleFontAttributes( xml_reader_t *p_xml_reader, 
    18091983                                  font_stack_t **p_fonts, int i_scale ) 
     
    18592033                    i_font_size = atoi( psz_value ); 
    18602034            } 
    1861             else if( !strcasecmp( "color", psz_name )  && 
    1862                      ( psz_value[0] == '#' ) ) 
    1863             { 
    1864                 i_font_color = strtol( psz_value + 1, NULL, 16 ); 
    1865                 i_font_color &= 0x00ffffff; 
     2035            else if( !strcasecmp( "color", psz_name ) ) 
     2036            { 
     2037                if( psz_value[0] == '#' ) 
     2038                { 
     2039                    i_font_color = strtol( psz_value + 1, NULL, 16 ); 
     2040                    i_font_color &= 0x00ffffff; 
     2041                } 
     2042                else 
     2043                { 
     2044                    for( int i = 0; p_html_colors[i].psz_name != NULL; i++ ) 
     2045                    { 
     2046                        if( !strncasecmp( psz_value, p_html_colors[i].psz_name, strlen(p_html_colors[i].psz_name) ) ) 
     2047                        { 
     2048                            i_font_color = p_html_colors[i].i_value; 
     2049                            break; 
     2050                        } 
     2051                    } 
     2052                } 
    18662053            } 
    18672054            else if( !strcasecmp( "alpha", psz_name ) && 
  • modules/misc/quartztext.c

    r857535c r5fe3825  
    602602} 
    603603 
     604static const struct { 
     605    const char *psz_name; 
     606    uint32_t   i_value; 
     607} p_html_colors[] = { 
     608    /* Official html colors */ 
     609    { "Aqua",    0x00FFFF }, 
     610    { "Black",   0x000000 }, 
     611    { "Blue",    0x0000FF }, 
     612    { "Fuchsia", 0xFF00FF }, 
     613    { "Gray",    0x808080 }, 
     614    { "Green",   0x008000 }, 
     615    { "Lime",    0x00FF00 }, 
     616    { "Maroon",  0x800000 }, 
     617    { "Navy",    0x000080 }, 
     618    { "Olive",   0x808000 }, 
     619    { "Purple",  0x800080 }, 
     620    { "Red",     0xFF0000 }, 
     621    { "Silver",  0xC0C0C0 }, 
     622    { "Teal",    0x008080 }, 
     623    { "White",   0xFFFFFF }, 
     624    { "Yellow",  0xFFFF00 }, 
     625 
     626    /* Common ones */ 
     627    { "AliceBlue", 0xF0F8FF }, 
     628    { "AntiqueWhite", 0xFAEBD7 }, 
     629    { "Aqua", 0x00FFFF }, 
     630    { "Aquamarine", 0x7FFFD4 }, 
     631    { "Azure", 0xF0FFFF }, 
     632    { "Beige", 0xF5F5DC }, 
     633    { "Bisque", 0xFFE4C4 }, 
     634    { "Black", 0x000000 }, 
     635    { "BlanchedAlmond", 0xFFEBCD }, 
     636    { "Blue", 0x0000FF }, 
     637    { "BlueViolet", 0x8A2BE2 }, 
     638    { "Brown", 0xA52A2A }, 
     639    { "BurlyWood", 0xDEB887 }, 
     640    { "CadetBlue", 0x5F9EA0 }, 
     641    { "Chartreuse", 0x7FFF00 }, 
     642    { "Chocolate", 0xD2691E }, 
     643    { "Coral", 0xFF7F50 }, 
     644    { "CornflowerBlue", 0x6495ED }, 
     645    { "Cornsilk", 0xFFF8DC }, 
     646    { "Crimson", 0xDC143C }, 
     647    { "Cyan", 0x00FFFF }, 
     648    { "DarkBlue", 0x00008B }, 
     649    { "DarkCyan", 0x008B8B }, 
     650    { "DarkGoldenRod", 0xB8860B }, 
     651    { "DarkGray", 0xA9A9A9 }, 
     652    { "DarkGrey", 0xA9A9A9 }, 
     653    { "DarkGreen", 0x006400 }, 
     654    { "DarkKhaki", 0xBDB76B }, 
     655    { "DarkMagenta", 0x8B008B }, 
     656    { "DarkOliveGreen", 0x556B2F }, 
     657    { "Darkorange", 0xFF8C00 }, 
     658    { "DarkOrchid", 0x9932CC }, 
     659    { "DarkRed", 0x8B0000 }, 
     660    { "DarkSalmon", 0xE9967A }, 
     661    { "DarkSeaGreen", 0x8FBC8F }, 
     662    { "DarkSlateBlue", 0x483D8B }, 
     663    { "DarkSlateGray", 0x2F4F4F }, 
     664    { "DarkSlateGrey", 0x2F4F4F }, 
     665    { "DarkTurquoise", 0x00CED1 }, 
     666    { "DarkViolet", 0x9400D3 }, 
     667    { "DeepPink", 0xFF1493 }, 
     668    { "DeepSkyBlue", 0x00BFFF }, 
     669    { "DimGray", 0x696969 }, 
     670    { "DimGrey", 0x696969 }, 
     671    { "DodgerBlue", 0x1E90FF }, 
     672    { "FireBrick", 0xB22222 }, 
     673    { "FloralWhite", 0xFFFAF0 }, 
     674    { "ForestGreen", 0x228B22 }, 
     675    { "Fuchsia", 0xFF00FF }, 
     676    { "Gainsboro", 0xDCDCDC }, 
     677    { "GhostWhite", 0xF8F8FF }, 
     678    { "Gold", 0xFFD700 }, 
     679    { "GoldenRod", 0xDAA520 }, 
     680    { "Gray", 0x808080 }, 
     681    { "Grey", 0x808080 }, 
     682    { "Green", 0x008000 }, 
     683    { "GreenYellow", 0xADFF2F }, 
     684    { "HoneyDew", 0xF0FFF0 }, 
     685    { "HotPink", 0xFF69B4 }, 
     686    { "IndianRed", 0xCD5C5C }, 
     687    { "Indigo", 0x4B0082 }, 
     688    { "Ivory", 0xFFFFF0 }, 
     689    { "Khaki", 0xF0E68C }, 
     690    { "Lavender", 0xE6E6FA }, 
     691    { "LavenderBlush", 0xFFF0F5 }, 
     692    { "LawnGreen", 0x7CFC00 }, 
     693    { "LemonChiffon", 0xFFFACD }, 
     694    { "LightBlue", 0xADD8E6 }, 
     695    { "LightCoral", 0xF08080 }, 
     696    { "LightCyan", 0xE0FFFF }, 
     697    { "LightGoldenRodYellow", 0xFAFAD2 }, 
     698    { "LightGray", 0xD3D3D3 }, 
     699    { "LightGrey", 0xD3D3D3 }, 
     700    { "LightGreen", 0x90EE90 }, 
     701    { "LightPink", 0xFFB6C1 }, 
     702    { "LightSalmon", 0xFFA07A }, 
     703    { "LightSeaGreen", 0x20B2AA }, 
     704    { "LightSkyBlue", 0x87CEFA }, 
     705    { "LightSlateGray", 0x778899 }, 
     706    { "LightSlateGrey", 0x778899 }, 
     707    { "LightSteelBlue", 0xB0C4DE }, 
     708    { "LightYellow", 0xFFFFE0 }, 
     709    { "Lime", 0x00FF00 }, 
     710    { "LimeGreen", 0x32CD32 }, 
     711    { "Linen", 0xFAF0E6 }, 
     712    { "Magenta", 0xFF00FF }, 
     713    { "Maroon", 0x800000 }, 
     714    { "MediumAquaMarine", 0x66CDAA }, 
     715    { "MediumBlue", 0x0000CD }, 
     716    { "MediumOrchid", 0xBA55D3 }, 
     717    { "MediumPurple", 0x9370D8 }, 
     718    { "MediumSeaGreen", 0x3CB371 }, 
     719    { "MediumSlateBlue", 0x7B68EE }, 
     720    { "MediumSpringGreen", 0x00FA9A }, 
     721    { "MediumTurquoise", 0x48D1CC }, 
     722    { "MediumVioletRed", 0xC71585 }, 
     723    { "MidnightBlue", 0x191970 }, 
     724    { "MintCream", 0xF5FFFA }, 
     725    { "MistyRose", 0xFFE4E1 }, 
     726    { "Moccasin", 0xFFE4B5 }, 
     727    { "NavajoWhite", 0xFFDEAD }, 
     728    { "Navy", 0x000080 }, 
     729    { "OldLace", 0xFDF5E6 }, 
     730    { "Olive", 0x808000 }, 
     731    { "OliveDrab", 0x6B8E23 }, 
     732    { "Orange", 0xFFA500 }, 
     733    { "OrangeRed", 0xFF4500 }, 
     734    { "Orchid", 0xDA70D6 }, 
     735    { "PaleGoldenRod", 0xEEE8AA }, 
     736    { "PaleGreen", 0x98FB98 }, 
     737    { "PaleTurquoise", 0xAFEEEE }, 
     738    { "PaleVioletRed", 0xD87093 }, 
     739    { "PapayaWhip", 0xFFEFD5 }, 
     740    { "PeachPuff", 0xFFDAB9 }, 
     741    { "Peru", 0xCD853F }, 
     742    { "Pink", 0xFFC0CB }, 
     743    { "Plum", 0xDDA0DD }, 
     744    { "PowderBlue", 0xB0E0E6 }, 
     745    { "Purple", 0x800080 }, 
     746    { "Red", 0xFF0000 }, 
     747    { "RosyBrown", 0xBC8F8F }, 
     748    { "RoyalBlue", 0x4169E1 }, 
     749    { "SaddleBrown", 0x8B4513 }, 
     750    { "Salmon", 0xFA8072 }, 
     751    { "SandyBrown", 0xF4A460 }, 
     752    { "SeaGreen", 0x2E8B57 }, 
     753    { "SeaShell", 0xFFF5EE }, 
     754    { "Sienna", 0xA0522D }, 
     755    { "Silver", 0xC0C0C0 }, 
     756    { "SkyBlue", 0x87CEEB }, 
     757    { "SlateBlue", 0x6A5ACD }, 
     758    { "SlateGray", 0x708090 }, 
     759    { "SlateGrey", 0x708090 }, 
     760    { "Snow", 0xFFFAFA }, 
     761    { "SpringGreen", 0x00FF7F }, 
     762    { "SteelBlue", 0x4682B4 }, 
     763    { "Tan", 0xD2B48C }, 
     764    { "Teal", 0x008080 }, 
     765    { "Thistle", 0xD8BFD8 }, 
     766    { "Tomato", 0xFF6347 }, 
     767    { "Turquoise", 0x40E0D0 }, 
     768    { "Violet", 0xEE82EE }, 
     769    { "Wheat", 0xF5DEB3 }, 
     770    { "White", 0xFFFFFF }, 
     771    { "WhiteSmoke", 0xF5F5F5 }, 
     772    { "Yellow", 0xFFFF00 }, 
     773    { "YellowGreen", 0x9ACD32 }, 
     774 
     775    { NULL, 0 } 
     776}; 
     777 
    604778static int HandleFontAttributes( xml_reader_t *p_xml_reader, 
    605779                                  font_stack_t **p_fonts, int i_scale ) 
     
    652826                    i_font_size = atoi( psz_value ); 
    653827            } 
    654             else if( !strcasecmp( "color", psz_name )  && 
    655                      ( psz_value[0] == '#' ) ) 
     828            else if( !strcasecmp( "color", psz_name ) ) 
    656829            { 
    657                 i_font_color = strtol( psz_value + 1, NULL, 16 ); 
    658                 i_font_color &= 0x00ffffff; 
     830                if( psz_value[0] == '#' ) 
     831                { 
     832                    i_font_color = strtol( psz_value + 1, NULL, 16 ); 
     833                    i_font_color &= 0x00ffffff; 
     834                } 
     835                else 
     836                { 
     837                    for( int i = 0; p_html_colors[i].psz_name != NULL; i++ ) 
     838                    { 
     839                        if( !strncasecmp( psz_value, p_html_colors[i].psz_name, strlen(p_html_colors[i].psz_name) ) ) 
     840                        { 
     841                            i_font_color = p_html_colors[i].i_value; 
     842                            break; 
     843                        } 
     844                    } 
     845                } 
    659846            } 
    660847            else if( !strcasecmp( "alpha", psz_name ) &&