freesci-develop
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[freesci-develop] r1513 - in freesci/trunk: . src src/gfx src/gfx/resour


From: jameson
Subject: [freesci-develop] r1513 - in freesci/trunk: . src src/gfx src/gfx/resource src/include
Date: Sat, 04 Feb 2006 20:48:09 +0100

Author: jameson
Date: 2006-02-04 20:47:58 +0100 (Sat, 04 Feb 2006)
New Revision: 1513

Added:
   freesci/trunk/src/gfx/gfx_res_options.c
   freesci/trunk/src/include/gfx_res_options.h
Modified:
   freesci/trunk/ChangeLog
   freesci/trunk/config.log
   freesci/trunk/src/config.c
   freesci/trunk/src/config.l
   freesci/trunk/src/gfx/Makefile.am
   freesci/trunk/src/gfx/resmgr.c
   freesci/trunk/src/gfx/resource/sci_resmgr.c
   freesci/trunk/src/include/Makefile.am
   freesci/trunk/src/include/gfx_options.h
   freesci/trunk/src/include/gfx_resmgr.h
Log:
* Back-ported gfx resource options

-- Christoph



Modified: freesci/trunk/ChangeLog
===================================================================
--- freesci/trunk/ChangeLog     2006-02-01 09:39:40 UTC (rev 1512)
+++ freesci/trunk/ChangeLog     2006-02-04 19:47:58 UTC (rev 1513)
@@ -1,3 +1,8 @@
+2006-02-04  Christoph Reichenbach  <address@hidden>
+
+       * src/gfx/gfx_res_options.c (apply_mod): Back-ported resource
+       options
+
 2006-02-01  Christoph Reichenbach  <address@hidden>
 
        * README.Win32 (SOUND): Eliminated reference to event sound server

Modified: freesci/trunk/config.log
===================================================================
--- freesci/trunk/config.log    2006-02-01 09:39:40 UTC (rev 1512)
+++ freesci/trunk/config.log    2006-02-04 19:47:58 UTC (rev 1513)
@@ -2993,3 +2993,39 @@
 #define YYTEXT_POINTER 1
 
 configure: exit 0
+
+## ---------------------- ##
+## Running config.status. ##
+## ---------------------- ##
+
+This file was extended by config.status, which was
+generated by GNU Autoconf 2.59.  Invocation command line was
+
+  CONFIG_FILES    = src/include/Makefile
+  CONFIG_HEADERS  = 
+  CONFIG_LINKS    = 
+  CONFIG_COMMANDS = 
+  $ ./config.status 
+
+on maya
+
+config.status:786: creating src/include/Makefile
+config.status:1212: executing default-1 commands
+
+## ---------------------- ##
+## Running config.status. ##
+## ---------------------- ##
+
+This file was extended by config.status, which was
+generated by GNU Autoconf 2.59.  Invocation command line was
+
+  CONFIG_FILES    = src/gfx/Makefile
+  CONFIG_HEADERS  = 
+  CONFIG_LINKS    = 
+  CONFIG_COMMANDS = 
+  $ ./config.status 
+
+on maya
+
+config.status:786: creating src/gfx/Makefile
+config.status:1212: executing default-1 commands

Modified: freesci/trunk/src/config.c
===================================================================
--- freesci/trunk/src/config.c  2006-02-01 09:39:40 UTC (rev 1512)
+++ freesci/trunk/src/config.c  2006-02-04 19:47:58 UTC (rev 1513)
@@ -351,8 +351,8 @@
        *yy_cp = '\0'; \
        (yy_c_buf_p) = yy_cp;
 
-#define YY_NUM_RULES 11
-#define YY_END_OF_BUFFER 12
+#define YY_NUM_RULES 12
+#define YY_END_OF_BUFFER 13
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -360,25 +360,30 @@
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static yyconst flex_int16_t yy_accept[157] =
+static yyconst flex_int16_t yy_accept[195] =
     {   0,
-       10,   10,   12,   10,    9,    9,    9,   10,   10,   10,
-       10,    7,   10,   10,   10,   10,   10,    9,    9,    9,
-        7,   10,   10,   10,   10,   10,   10,    7,    7,    7,
-        7,    7,    7,    7,   10,   10,   10,   10,    8,   10,
-       10,   10,    7,    7,    7,    7,    7,    2,   10,   10,
-       10,   10,   10,    7,    7,    7,    2,   10,   10,   10,
-       10,   10,   10,   10,   10,   10,   10,    6,   10,   10,
-       10,   10,    6,    6,    6,    6,    6,    6,   10,   10,
-       10,   10,   10,    6,    6,    6,    6,    7,   10,   10,
-       10,    7,   10,   10,    6,    6,    7,    6,   10,   10,
+       11,   11,   13,   11,   10,   10,   10,   11,   11,   11,
+       11,    8,   11,   11,   11,   11,   11,   11,   11,   10,
+       10,   10,    8,   11,   11,   11,   11,   11,   11,    8,
+        8,    8,    8,    8,    8,    8,   11,   11,   11,   11,
+       11,   11,   11,    9,   11,   11,   11,    8,    8,    8,
+        8,    8,    3,   11,   11,   11,   11,   11,   11,   11,
+       11,    8,    8,    8,    3,   11,   11,   11,   11,    0,
+       11,   11,   11,    8,   11,   11,   11,   11,   11,   11,
+        0,   11,    0,   11,    1,    8,    8,    8,    8,    8,
+       11,   11,   11,   11,    7,   11,    0,    1,   11,    0,
 
-        7,    7,   10,    1,   10,   10,    7,   10,    7,   10,
-        7,    5,    5,    5,    5,    5,    5,    5,    5,   10,
-        7,    5,    5,    5,    5,    5,    5,   10,    7,    7,
-        5,    5,    5,    4,    4,    4,    4,    4,    4,    4,
-        4,    7,    4,    4,    4,    4,    4,    4,    7,    4,
-        4,    4,    7,    3,    3,    0
+       11,   11,    1,   11,   11,   11,    7,    7,    7,    7,
+        7,    7,   11,    0,    0,    0,    1,   11,   11,   11,
+       11,    7,    7,    7,    7,    8,   11,   11,   11,    8,
+       11,   11,    7,    7,    8,    7,   11,   11,    8,    8,
+       11,    2,   11,   11,    8,   11,    8,   11,    8,    6,
+        6,    6,    6,    6,    6,    6,    6,   11,    8,    6,
+        6,    6,    6,    6,    6,   11,    8,    8,    6,    6,
+        6,    5,    5,    5,    5,    5,    5,    5,    5,    8,
+        5,    5,    5,    5,    5,    5,    8,    5,    5,    5,
+        8,    4,    4,    0
+
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -386,17 +391,17 @@
         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
         1,    1,    4,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    2,    1,    5,    6,    1,    7,    1,    1,    1,
-        1,    1,    1,    1,    8,    9,   10,   11,   11,   11,
-       11,   11,   11,   11,   11,   11,   11,    8,    1,   12,
-       13,   14,    1,    1,   15,   15,   15,   15,   15,   15,
-       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
-       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
-       16,   17,   18,    1,   19,    1,   15,   20,   21,   22,
+        1,    2,    1,    5,    6,    1,    7,    1,    1,    8,
+        1,    1,    1,    1,    9,   10,   11,   12,   12,   12,
+       12,   12,   12,   12,   12,   12,   12,    9,   13,   14,
+       15,   16,    1,    1,   17,   17,   17,   17,   17,   17,
+       17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
+       17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
+       18,   19,   20,    1,   21,    1,   17,   22,   23,   24,
 
-       23,   15,   24,   15,   25,   15,   15,   26,   27,   28,
-       29,   15,   15,   30,   31,   15,   32,   33,   15,   15,
-       15,   15,    1,    1,    1,    1,    1,    1,    1,    1,
+       25,   17,   26,   17,   27,   17,   17,   28,   29,   30,
+       31,   32,   17,   33,   34,   17,   35,   36,   37,   17,
+       17,   17,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -413,288 +418,398 @@
         1,    1,    1,    1,    1
     } ;
 
-static yyconst flex_int32_t yy_meta[34] =
+static yyconst flex_int32_t yy_meta[38] =
     {   0,
-        1,    1,    2,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1
+        1,    1,    2,    1,    3,    1,    1,    1,    1,    1,
+        1,    4,    1,    1,    1,    1,    4,    1,    1,    1,
+        4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
+        4,    4,    4,    4,    4,    4,    4
     } ;
 
-static yyconst flex_int16_t yy_base[179] =
+static yyconst flex_int16_t yy_base[224] =
     {   0,
-        0,    0,  793,    0,   32,   35,   38,   45,    0,  767,
-       63,   96,  129,  768,  763,  759,    0,  161,   51,  164,
-        0,  167,  180,  777,  751,  188,    0,    0,   46,  221,
-      254,  168,  170,  272,  760,  756,  744,  713,  973,  689,
-      695,  693,  186,    0,  291,    0,  309,  688,  655,  656,
-      650,  654,  342,  200,  375,    0,  675,  649,  631,  637,
-      625,  176,  634,  622,  622,  623,  193,  393,  585,  587,
-      579,  583,    0,  181,  426,  459,  476,  257,  572,  546,
-      262,  551,  542,  297,    0,  487,    0,  505,  519,  483,
-      281,  468,  478,  470,  381,  538,  478,  261,  445,  407,
+        0,    0,  901,    0,   36,   39,   42,   51,    0,  873,
+       71,  108,  145,  864,  873,  870,  871,   22,    0,   59,
+      181,  184,    0,  187,  202,  891,  863,  211,    0,    0,
+       46,  248,  285,  188,  189,  305,  837,  818,  823,  817,
+      800,  800,  801, 1421,  766,  773,  771,  193,    0,  326,
+        0,  346,  765,  731,  722,  383,  715,  705,  658,  663,
+      403,  209,  440,    0,  675,  612,  610,  460,  190,  623,
+      478,  491,  511,  531,  589,  552,  539,  197,  525,  527,
+      213,  483,  218,  549,    0,    0,   52,  562,  582,  619,
+      510,  497,  492,  293,  640,  479,  554, 1421,  675,  219,
 
-      484,  544,  382,    0,  287,  365,  555,  472,  566,  354,
-      598,    0,    0,  460,  609,  642,  659,  556,  670,  495,
-      664,  373,  560,    0,  689,    0,  707,  546,  740,  772,
-      600,  783,    0,    0,    0,  465,  801,  834,  851,  645,
-      862,  856,  340,  663,    0,  881,    0,  899,  931,  695,
-      942,    0,  959,  961,  494,  973,  311,  305,  286,  281,
-      280,  276,  268,  256,  223,  206,  200,  199,  176,  175,
-      170,  131,   98,   65,   59,   55,   43,   42
+      482,  679,  462,  434,  420,  418,    0,  225,  692,  729,
+      748,  292,  375,  749,  397,  753,  392,  363,  300,  329,
+      312,  333,    0,  766,    0,  786,  286,  275,  314,  470,
+      237,  214,  447,  823,  685,  286,  182,  177,  475,  551,
+      180,    0,  334,  121,  842,  488,  854,   78,  890,    0,
+        0,  320,  902,  939,  958,  681,  970,  521,  963,   63,
+      736,    0,  991,    0, 1011,  749, 1048, 1084,  773, 1096,
+        0,    0,    0,  730, 1116, 1153, 1172,  830, 1184, 1177,
+       55,  844,    0, 1205,    0, 1225, 1261,  848, 1273,    0,
+     1292, 1294,  759, 1421, 1306, 1310, 1314, 1318, 1322, 1326,
+
+     1330, 1334, 1336, 1340, 1344, 1348, 1352, 1356, 1360, 1364,
+     1368, 1372, 1376, 1380, 1384, 1388, 1392, 1396, 1400, 1404,
+     1408, 1412, 1416
     } ;
 
-static yyconst flex_int16_t yy_def[179] =
+static yyconst flex_int16_t yy_def[224] =
     {   0,
-      156,    1,  156,  157,  157,  156,  157,  158,  159,  157,
-      156,  156,  156,   11,   11,   11,  157,  157,  156,  157,
-       12,  157,  158,  159,  157,   23,   11,   12,  157,  156,
-      160,   12,   12,  161,   13,   11,   11,   11,  156,  157,
-       26,  162,  162,   30,  163,   30,  156,  157,   11,   11,
-       11,  157,  156,  162,  163,   47,  157,   11,   11,   11,
-      157,   53,   11,   11,   11,  157,  157,  156,   23,   11,
-       11,  157,   68,  157,  156,  164,   68,   68,   23,   11,
-       11,  165,  166,  166,   75,  167,   75,  156,   23,   11,
-      157,   12,  165,  168,  166,  167,  166,   88,   23,   23,
+      194,    1,  194,  195,  195,  194,  195,  196,  197,  195,
+      194,  194,  194,   11,   11,   11,   11,   11,  195,  195,
+      194,  195,   12,  195,  196,  197,  195,   25,   11,   12,
+      195,  194,  198,   12,   12,  199,   13,   11,   11,   11,
+       11,   11,   11,  194,  195,   28,  200,  200,   32,  201,
+       32,  194,  195,   11,   11,   11,   11,   11,   11,  195,
+      194,  200,  201,   52,  195,   11,   11,  195,   68,  202,
+      203,   25,   28,   12,   11,   11,  195,   61,   11,   11,
+      204,  203,  204,  205,  195,   74,   68,  198,  194,  199,
+       11,   11,  195,  195,  194,   25,  206,  194,  205,  204,
 
-       12,   12,  168,  157,   23,   23,   12,  157,  156,   23,
-       12,  169,  109,  169,  156,  170,  109,  109,  171,   23,
-       12,  172,  172,  115,  173,  115,  156,  157,  156,   12,
-      172,  173,  127,  174,  129,  174,  156,  175,  129,  129,
-      176,   12,  177,  177,  137,  178,  137,  156,   12,  177,
-      178,  148,   12,   12,  157,    0,  156,  156,  156,  156,
-      156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
-      156,  156,  156,  156,  156,  156,  156,  156
+      207,  205,  207,   11,   11,  195,   95,  195,  194,  208,
+       95,   95,   25,  206,  209,  206,  209,   11,   11,  210,
+      211,  211,  109,  212,  109,  194,   25,   11,  195,   12,
+      210,  213,  211,  212,  211,  126,   25,   25,   12,   12,
+      213,  195,   25,   25,   12,  195,  194,   25,   12,  214,
+      147,  214,  194,  215,  147,  147,  216,   25,   12,  217,
+      217,  153,  218,  153,  194,  195,  194,   12,  217,  218,
+      165,  219,  167,  219,  194,  220,  167,  167,  221,   12,
+      222,  222,  175,  223,  175,  194,   12,  222,  223,  186,
+       12,   12,  195,    0,  194,  194,  194,  194,  194,  194,
+
+      194,  194,  194,  194,  194,  194,  194,  194,  194,  194,
+      194,  194,  194,  194,  194,  194,  194,  194,  194,  194,
+      194,  194,  194
     } ;
 
-static yyconst flex_int16_t yy_nxt[1007] =
+static yyconst flex_int16_t yy_nxt[1459] =
     {   0,
-        4,    5,    6,    7,    8,    9,   10,    8,    8,    8,
-       11,    4,   12,    4,   11,   13,    4,    4,    8,   11,
-       11,   14,   11,   11,   11,   11,   11,   11,   11,   15,
-       11,   11,   16,   18,   19,   20,   19,   19,   19,   20,
-       19,   20,  146,  143,   21,   17,   22,   29,   17,   29,
-       17,   17,   19,   19,   19,  141,   17,   21,   17,  138,
-       17,   17,   17,   17,   22,  134,   17,   23,   17,   17,
-       23,   26,   23,   27,   17,   21,   17,   27,   17,   17,
-       17,   23,   27,   27,   27,   27,   27,   27,   27,   27,
-       27,   27,   27,   27,   27,   27,   17,   28,  125,   29,
+        4,    5,    6,    7,    8,    9,   10,    4,    8,    8,
+        8,   11,    4,    4,   12,    4,   11,   13,    4,    4,
+        8,   11,   14,   15,   11,   11,   11,   11,   11,   11,
+       11,   16,   17,   11,   11,   18,   11,   20,   21,   22,
+       21,   21,   21,   22,   21,   22,   42,   31,   43,   31,
+       23,   19,   24,   87,   19,   87,   19,   19,   19,  188,
+       20,   21,   22,   19,   19,   23,   19,  169,   19,   19,
+       19,   19,   24,   23,   19,   25,   19,   19,   19,   25,
+       28,   25,   29,   19,   19,   23,   19,   29,   19,   19,
+       19,   25,   29,   29,   29,   29,   29,   29,   29,   29,
 
-       30,   17,   17,   31,   32,   32,   33,   17,   17,   17,
-       32,   17,   34,   17,   31,   32,   32,   32,   32,   32,
-       32,   32,   32,   32,   32,   32,   32,   32,   32,   17,
-       17,  122,   17,   17,   17,   17,   17,   17,   17,   35,
-       17,   17,   17,   35,   17,   17,   17,   35,   35,   35,
-       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
-       35,   35,   18,   19,   20,   20,   19,   20,   22,   29,
-      119,   29,   32,   21,   32,  116,  112,   67,   32,   21,
-       17,   22,   74,   17,   74,   17,   17,   43,   68,   43,
-       54,   17,   21,   17,   67,   17,   17,   17,   41,  103,
+       29,   29,   29,   29,   29,   29,   29,   29,   19,   30,
+      158,   31,   32,   19,   19,   19,   33,   34,   34,   35,
+       19,   19,   19,   19,   34,   19,   36,   19,   33,   34,
+       34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
+       34,   34,   34,   34,   34,   19,   19,  148,   19,   19,
+       19,   19,   19,   19,   19,   19,   37,   19,   19,   19,
+       19,   37,   19,   19,   19,   37,   37,   37,   37,   37,
+       37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
+       37,   37,   21,   21,   21,   22,   21,   22,   24,   31,
+       31,   69,   34,   34,   48,  142,   48,   62,   94,   34,
 
-       86,   43,   41,   43,   54,   68,   83,   41,   41,   41,
-       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
-       41,   42,   43,   93,   43,   44,   42,   42,   45,   46,
-       46,   46,   42,   42,   42,   46,   42,   47,   42,   45,
-       46,   46,   46,   46,   46,   46,   46,   46,   46,   46,
-       46,   46,   46,   46,   17,   29,   76,   29,   74,   17,
-       17,   77,   84,   91,   84,   17,   17,   17,   45,   17,
-       17,   17,   17,   29,   92,   29,   42,   17,   17,   17,
-       34,   31,   91,   17,   17,   17,   24,   17,  108,   17,
-       17,   42,   43,   92,   43,   55,   42,   42,   84,  109,
+      144,   23,   19,   24,   74,   19,  143,   19,   19,   19,
+       48,   95,   48,   62,   19,   19,   23,   19,   97,   19,
+       19,   19,   46,   97,   97,   98,  108,   46,  108,  142,
+       98,   98,   46,   46,   46,   46,   46,   46,   46,   46,
+       46,   46,   46,   46,   46,   46,   46,   46,   47,   48,
+      132,   48,   49,   47,   47,   47,   50,   51,   51,   51,
+       47,   47,   47,   47,   51,   47,   52,   47,   50,   51,
+       51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
+       51,   51,   51,   51,   51,   19,   31,  122,   31,  122,
+       19,   19,   19,  108,   94,  138,  111,   19,   19,   19,
 
-       84,   95,   42,   42,   42,   23,   42,   42,   42,   42,
-       43,   17,   43,   56,   42,   42,   42,   47,   47,   47,
-       42,   42,   42,   47,   42,   47,   42,   42,   47,   47,
-       47,   47,   47,   47,   47,   47,   47,   47,   47,   47,
-       47,   47,   17,   22,  150,   17,   23,   17,   17,   23,
-       23,   23,   62,   17,   21,   17,   62,   17,   17,   17,
-       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   42,   43,  131,   43,   55,
-       42,   42,   84,  120,   84,   95,   42,   42,   42,  110,
-       42,   42,   42,   17,   73,  104,   74,   75,   17,   17,
+       19,  129,   19,   19,   19,   19,   31,   95,   31,  137,
+       19,   19,   19,   19,  130,  129,  133,   19,   19,   19,
+       19,  152,   19,  152,   19,   19,   47,   48,  130,   48,
+       63,   47,   47,   47,  122,  146,  122,  133,   47,   47,
+       47,   47,  132,   47,   47,   47,   47,   48,  147,   48,
+       64,   47,   47,   47,   47,   52,   52,   52,   47,   47,
+       47,   47,   52,   47,   52,   47,   47,   52,   52,   52,
+       52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
+       52,   52,   52,   68,   69,   70,   68,  128,   68,   68,
+       71,   72,   73,   72,   83,   68,   68,   74,   68,   83,
 
-       76,   77,   77,   78,   17,   17,   17,   77,   17,   34,
-       17,   76,   77,   77,   77,   77,   77,   77,   77,   77,
-       77,   77,   77,   77,   77,   77,   83,   84,  106,   84,
-       85,   83,   83,   86,   87,   87,   87,   83,   83,   83,
-       87,   83,   88,   83,   86,   87,   87,   87,   87,   87,
-       87,   87,   87,   87,   87,   87,   87,   87,   87,   17,
-       74,  114,   74,  114,   17,   17,  136,  105,  136,  101,
-       17,   17,   17,  108,   17,   17,   17,   74,  102,   97,
-       77,   97,   95,  104,  109,  101,   77,   83,   84,   94,
-       84,   96,   83,   83,  102,   29,  128,  155,   83,   83,
+       68,   68,   68,   19,   24,  127,   19,   25,   19,   19,
+       19,   25,   25,   25,   78,   19,   19,   23,   19,   78,
+       19,   19,   19,   78,   78,   78,   78,   78,   78,   78,
+       78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
+       47,   48,  120,   48,   63,   47,   47,   47,  122,  119,
+      122,  133,   47,   47,   47,   47,  118,   47,   47,   47,
+       68,   68,   70,   68,   83,   68,   68,   71,   68,   68,
+       68,  139,   68,   68,   68,   68,  139,   68,   68,   68,
+       83,  140,   19,   84,   83,   83,  140,   19,   84,  146,
+       85,   68,   69,   70,   68,   85,   68,   68,   71,   72,
 
-       83,  100,   83,   83,   83,   83,   97,  129,   97,   98,
-       83,   83,   83,   88,   88,   88,   83,   83,   83,   88,
-       83,   88,   83,   83,   88,   88,   88,   88,   88,   88,
-       88,   88,   88,   88,   88,   88,   88,   88,   83,   84,
-       99,   84,   96,   83,   83,   29,   95,  128,   32,   83,
-       83,   83,  107,   83,   83,   83,   29,  114,  129,   32,
-      117,  123,   94,  123,  131,  111,  112,  113,   90,  114,
-      115,  112,  112,  116,  117,  117,  118,  112,  112,  112,
-      117,  112,  119,  112,  116,  117,  117,  117,  117,  117,
-      117,  117,  117,  117,  117,  117,  117,  117,  117,   29,
+       72,   72,  147,   68,   68,   74,   68,  113,   68,   68,
+       68,   68,   69,   70,   68,  106,   68,   68,   71,   72,
+       72,   72,  166,   68,   68,   74,   68,  105,   68,   68,
+       68,   68,   86,   70,   87,  167,   68,   68,   71,   88,
+       89,   89,  104,   68,   68,   68,   68,   96,   68,   90,
+       68,  100,   31,  101,  102,   34,  100,   56,  115,  116,
+      145,  103,   68,   87,   70,   87,  117,   68,   68,   71,
+       88,   88,   88,   93,   68,   68,   68,   68,   92,   68,
+       68,   68,   68,   87,   70,   87,   34,   68,   68,   71,
+       88,   89,   89,   34,   68,   68,   68,   68,   34,   68,
 
-       89,  123,   32,  123,  131,   82,   81,   80,  121,  122,
-      123,   79,  123,  124,  122,  122,  125,  126,  126,  126,
-      122,  122,  122,  126,  122,  127,  122,  125,  126,  126,
+       90,   68,   33,   34,   34,   34,   34,   34,   34,   34,
+       34,   34,   34,   34,   34,   34,   34,   34,   34,   68,
+       87,   70,   87,   91,   68,   68,   71,   68,   90,   90,
+       81,   68,   68,   68,   68,   80,   68,   90,   68,   19,
+       19,  107,   79,  108,  109,   19,   19,   19,  110,  111,
+      111,  112,   19,   19,   19,   19,  111,   19,   36,   19,
+      110,  111,  111,  111,  111,  111,  111,  111,  111,  111,
+      111,  111,  111,  111,  111,  111,  111,  100,   65,  101,
+      102,  100,  152,  101,  102,  155,  135,  103,  135,  133,
+       77,  103,  121,  122,   56,  122,  123,  121,  121,  121,
+
+      124,  125,  125,  125,  121,  121,  121,  121,  125,  121,
+      126,  121,  124,  125,  125,  125,  125,  125,  125,  125,
+      125,  125,  125,  125,  125,  125,  125,  125,  125,   19,
+      108,  174,  108,  174,   19,   19,   19,  161,   76,  161,
+      169,   19,   19,   19,   19,   75,   19,   19,   19,  108,
+      166,  100,  111,  115,  116,  100,   67,  115,  116,  111,
+       31,  117,  193,  167,   66,  117,  121,  122,   65,  122,
+      134,  121,  121,  121,  161,   62,  161,  169,  121,  121,
+      121,  121,   61,  121,  121,  121,  121,  135,   60,  135,
+      136,  121,  121,  121,  121,  126,  126,  126,  121,  121,
+
+      121,  121,  126,  121,  126,  121,  121,  126,  126,  126,
       126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-      126,  126,  112,  114,   72,  114,  136,  112,  112,  139,
-       71,   70,   69,  112,  112,  112,   66,  112,  112,  112,
-      114,   65,   64,  117,  144,   29,  144,  150,   32,  117,
-      112,  114,   63,  114,  130,  112,  112,  112,   57,   61,
-       60,  112,  112,  112,   59,  112,   58,  112,  112,  122,
-      123,   57,  123,  132,  122,  122,  144,   54,  144,  150,
+      126,  126,  126,  121,  122,   59,  122,  134,  121,  121,
+      121,  174,   58,   57,  177,  121,  121,  121,  121,   56,
+      121,  121,  121,   31,   55,  182,   34,  182,  188,  182,
+       54,  182,  188,  149,  150,  151,   53,  152,  153,  150,
+      150,  150,  154,  155,  155,  156,  150,  150,  150,  150,
+      155,  150,  157,  150,  154,  155,  155,  155,  155,  155,
+      155,  155,  155,  155,  155,  155,  155,  155,  155,  155,
+      155,   31,   45,   44,   34,   41,   40,   39,   38,   27,
 
-      122,  122,  122,   53,  122,  122,  122,  122,  123,   52,
-      123,  133,  122,  122,  122,  127,  127,  127,  122,  122,
-      122,  127,  122,  127,  122,  122,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      134,  135,   51,  136,  137,  134,  134,  138,  139,  139,
-      140,  134,  134,  134,  139,  134,  141,  134,  138,  139,
-      139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
-      139,  139,  139,   29,   50,   49,   32,   48,   40,   39,
-      142,   38,   32,  122,  123,   37,  123,  132,  122,  122,
-       36,   25,  156,  156,  122,  122,  122,  156,  122,  122,
+      194,  159,  160,  161,  194,  161,  162,  160,  160,  160,
+      163,  164,  164,  164,  160,  160,  160,  160,  164,  160,
+      165,  160,  163,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  150,
+      152,  194,  152,  194,  150,  150,  150,  194,  194,  194,
+      194,  150,  150,  150,  150,  194,  150,  150,  150,  152,
+      194,  194,  155,  194,   31,  194,  194,   34,  194,  155,
+      150,  152,  194,  152,  168,  150,  150,  150,  150,  194,
+      194,  194,  150,  150,  150,  150,  194,  150,  194,  150,
+      150,  160,  161,  194,  161,  170,  160,  160,  160,  194,
 
-      122,  143,  144,  156,  144,  145,  143,  143,  146,  147,
-      147,  147,  143,  143,  143,  147,  143,  148,  143,  146,
-      147,  147,  147,  147,  147,  147,  147,  147,  147,  147,
-      147,  147,  147,  147,  134,  136,  156,  136,  156,  134,
-      134,  156,  156,  156,  156,  134,  134,  134,  156,  134,
-      134,  134,  136,  156,  156,  139,  156,   29,  156,  156,
-       32,  139,  134,  136,  156,  136,  149,  134,  134,  134,
-      156,  156,  156,  134,  134,  134,  156,  134,  156,  134,
-      134,  143,  144,  156,  144,  151,  143,  143,  156,  156,
-      156,  156,  143,  143,  143,  156,  143,  143,  143,  143,
+      194,  194,  194,  160,  160,  160,  160,  194,  160,  160,
+      160,  160,  161,  194,  161,  171,  160,  160,  160,  160,
+      165,  165,  165,  160,  160,  160,  160,  165,  160,  165,
+      160,  160,  165,  165,  165,  165,  165,  165,  165,  165,
+      165,  165,  165,  165,  165,  165,  165,  165,  172,  173,
+      194,  174,  175,  172,  172,  172,  176,  177,  177,  178,
+      172,  172,  172,  172,  177,  172,  179,  172,  176,  177,
+      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
+      177,  177,  177,  177,  177,   31,  194,  194,   34,  194,
+      194,  194,  194,  180,  194,   34,  160,  161,  194,  161,
 
-      144,  156,  144,  152,  143,  143,  143,  148,  148,  148,
-      143,  143,  143,  148,  143,  148,  143,  143,  148,  148,
-      148,  148,  148,  148,  148,  148,  148,  148,  148,  148,
-      148,  148,   29,  156,  156,   32,  156,  156,  156,  156,
-      156,  153,  143,  144,  156,  144,  151,  143,  143,  156,
-      156,  156,  156,  143,  143,  143,  156,  143,  143,  143,
-       29,  156,   29,   32,  155,   32,  156,  156,  156,  154,
-      156,   32,    3,  156,  156,  156,  156,  156,  156,  156,
-      156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
-      156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
+      170,  160,  160,  160,  194,  194,  194,  194,  160,  160,
+      160,  160,  194,  160,  160,  160,  181,  182,  194,  182,
+      183,  181,  181,  181,  184,  185,  185,  185,  181,  181,
+      181,  181,  185,  181,  186,  181,  184,  185,  185,  185,
+      185,  185,  185,  185,  185,  185,  185,  185,  185,  185,
+      185,  185,  185,  172,  174,  194,  174,  194,  172,  172,
+      172,  194,  194,  194,  194,  172,  172,  172,  172,  194,
+      172,  172,  172,  174,  194,  194,  177,  194,   31,  194,
+      194,   34,  194,  177,  172,  174,  194,  174,  187,  172,
+      172,  172,  172,  194,  194,  194,  172,  172,  172,  172,
 
-      156,  156,  156,  156,  156,  156
+      194,  172,  194,  172,  172,  181,  182,  194,  182,  189,
+      181,  181,  181,  194,  194,  194,  194,  181,  181,  181,
+      181,  194,  181,  181,  181,  181,  182,  194,  182,  190,
+      181,  181,  181,  181,  186,  186,  186,  181,  181,  181,
+      181,  186,  181,  186,  181,  181,  186,  186,  186,  186,
+      186,  186,  186,  186,  186,  186,  186,  186,  186,  186,
+      186,  186,   31,  194,  194,   34,  194,  194,  194,  194,
+      194,  194,  191,  181,  182,  194,  182,  189,  181,  181,
+      181,  194,  194,  194,  194,  181,  181,  181,  181,  194,
+      181,  181,  181,   31,  194,   31,   34,  193,   34,  194,
+
+      194,  194,  194,  192,  194,   34,   19,  194,   19,   19,
+       25,  194,   25,   25,   26,  194,   26,   26,   33,  194,
+       33,   33,   36,  194,   36,   36,   47,  194,   47,   47,
+       50,  194,   50,   50,   70,   70,   82,   82,   82,   82,
+       83,   83,  194,   83,   99,   99,   99,   99,  114,  114,
+      114,  114,  101,  101,  101,  101,  110,  194,  110,  110,
+      115,  115,  115,  115,  131,  194,  131,  131,  121,  194,
+      121,  121,  124,  194,  124,  124,  141,  194,  141,  141,
+      150,  194,  150,  150,  154,  194,  154,  154,  157,  194,
+      157,  157,  160,  194,  160,  160,  163,  194,  163,  163,
+
+      172,  194,  172,  172,  176,  194,  176,  176,  179,  194,
+      179,  179,  181,  194,  181,  181,  184,  194,  184,  184,
+        3,  194,  194,  194,  194,  194,  194,  194,  194,  194,
+      194,  194,  194,  194,  194,  194,  194,  194,  194,  194,
+      194,  194,  194,  194,  194,  194,  194,  194,  194,  194,
+      194,  194,  194,  194,  194,  194,  194,  194
     } ;
 
-static yyconst flex_int16_t yy_chk[1007] =
+static yyconst flex_int16_t yy_chk[1459] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    5,    5,    5,    6,    6,    6,    7,
-        7,    7,  178,  177,    5,    8,    8,   29,    8,   29,
-        8,    8,   19,   19,   19,  176,    8,    8,    8,  175,
-        8,    8,    8,   11,   11,  174,   11,   11,   11,   11,
+        1,    1,    1,    1,    1,    1,    1,    5,    5,    5,
+        6,    6,    6,    7,    7,    7,   18,   31,   18,   31,
+        5,    8,    8,   87,    8,   87,    8,    8,    8,  181,
+       20,   20,   20,    8,    8,    8,    8,  160,    8,    8,
+        8,   11,   11,   20,   11,   11,   11,   11,   11,   11,
        11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
        11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
-       11,   11,   11,   11,   11,   11,   12,   12,  173,   12,
 
+       11,   11,   11,   11,   11,   11,   11,   11,   12,   12,
+      148,   12,   12,   12,   12,   12,   12,   12,   12,   12,
        12,   12,   12,   12,   12,   12,   12,   12,   12,   12,
        12,   12,   12,   12,   12,   12,   12,   12,   12,   12,
-       12,   12,   12,   12,   12,   12,   12,   12,   12,   13,
-       13,  172,   13,   13,   13,   13,   13,   13,   13,   13,
+       12,   12,   12,   12,   12,   13,   13,  144,   13,   13,
        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
-       13,   13,   18,   18,   18,   20,   20,   20,   22,   32,
-      171,   33,   32,   18,   33,  170,  169,   62,   32,   22,
-       23,   23,   74,   23,   74,   23,   23,   43,   62,   43,
-       43,   23,   23,   23,   67,   23,   23,   23,   26,  168,
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+       13,   13,   21,   21,   21,   22,   22,   22,   24,   34,
+       35,   69,   34,   35,   48,  141,   48,   48,   78,   34,
 
-      167,   54,   26,   54,   54,   67,  166,   26,   26,   26,
-       26,   26,   26,   26,   26,   26,   26,   26,   26,   26,
-       26,   30,   30,  165,   30,   30,   30,   30,   30,   30,
-       30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
-       30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
-       30,   30,   30,   30,   31,   31,  164,   31,   78,   31,
-       31,   78,   98,   81,   98,   31,   31,   31,  163,   31,
-       31,   31,   34,   34,   81,   34,  162,   34,   34,   34,
-      161,  160,   91,   34,   34,   34,  159,   34,  105,   34,
-       34,   45,   45,   91,   45,   45,   45,   45,   84,  105,
+      138,   24,   25,   25,   69,   25,  137,   25,   25,   25,
+       62,   78,   62,   62,   25,   25,   25,   25,   81,   25,
+       25,   25,   28,   83,  100,   81,  108,   28,  108,  132,
+       83,  100,   28,   28,   28,   28,   28,   28,   28,   28,
+       28,   28,   28,   28,   28,   28,   28,   28,   32,   32,
+      131,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   33,   33,  136,   33,  136,
+       33,   33,   33,  112,   94,  128,  112,   33,   33,   33,
 
-       84,   84,   45,   45,   45,  158,   45,   45,   45,   47,
-       47,  157,   47,   47,   47,   47,   47,   47,   47,   47,
-       47,   47,   47,   47,   47,   47,   47,   47,   47,   47,
-       47,   47,   47,   47,   47,   47,   47,   47,   47,   47,
-       47,   47,   53,   53,  143,   53,   53,   53,   53,   53,
-       53,   53,   53,   53,   53,   53,   53,   53,   53,   53,
-       53,   53,   53,   53,   53,   53,   53,   53,   53,   53,
-       53,   53,   53,   53,   53,   55,   55,  122,   55,   55,
-       55,   55,   95,  110,   95,   95,   55,   55,   55,  106,
-       55,   55,   55,   68,   68,  103,   68,   68,   68,   68,
+       33,  119,   33,   33,   33,   36,   36,   94,   36,  127,
+       36,   36,   36,   36,  119,  129,  121,   36,   36,   36,
+       36,  152,   36,  152,   36,   36,   50,   50,  129,   50,
+       50,   50,   50,   50,  122,  143,  122,  122,   50,   50,
+       50,   50,  120,   50,   50,   50,   52,   52,  143,   52,
+       52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
+       52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
+       52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
+       52,   52,   52,   56,   56,   56,   56,  118,   56,   56,
+       56,   56,   56,   56,  117,   56,   56,   56,   56,  115,
 
-       68,   68,   68,   68,   68,   68,   68,   68,   68,   68,
-       68,   68,   68,   68,   68,   68,   68,   68,   68,   68,
-       68,   68,   68,   68,   68,   68,   75,   75,  100,   75,
-       75,   75,   75,   75,   75,   75,   75,   75,   75,   75,
-       75,   75,   75,   75,   75,   75,   75,   75,   75,   75,
-       75,   75,   75,   75,   75,   75,   75,   75,   75,   76,
-       76,  114,   76,  114,   76,   76,  136,   99,  136,   92,
-       76,   76,   76,  108,   76,   76,   76,   77,   92,   97,
-       77,   97,   97,   94,  108,  101,   77,   86,   86,   93,
-       86,   86,   86,   86,  101,  155,  120,  155,   86,   86,
+       56,   56,   56,   61,   61,  113,   61,   61,   61,   61,
+       61,   61,   61,   61,   61,   61,   61,   61,   61,   61,
+       61,   61,   61,   61,   61,   61,   61,   61,   61,   61,
+       61,   61,   61,   61,   61,   61,   61,   61,   61,   61,
+       63,   63,  106,   63,   63,   63,   63,   63,  133,  105,
+      133,  133,   63,   63,   63,   63,  104,   63,   63,   63,
+       68,   68,   68,   68,  103,   68,   68,   68,   68,   68,
+       68,  130,   68,   68,   68,   68,  139,   68,   68,   68,
+       71,  130,   71,   71,  101,   82,  139,   82,   82,  146,
+       71,   72,   72,   72,   72,   82,   72,   72,   72,   72,
 
-       86,   90,   86,   86,   86,   88,   88,  120,   88,   88,
-       88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
-       88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
-       88,   88,   88,   88,   88,   88,   88,   88,   96,   96,
-       89,   96,   96,   96,   96,  102,   83,  128,  102,   96,
-       96,   96,  102,   96,   96,   96,  107,  118,  128,  107,
-      118,  123,   82,  123,  123,  107,  109,  109,   80,  109,
+       72,   72,  146,   72,   72,   72,   72,   96,   72,   72,
+       72,   73,   73,   73,   73,   93,   73,   73,   73,   73,
+       73,   73,  158,   73,   73,   73,   73,   92,   73,   73,
+       73,   74,   74,   74,   74,  158,   74,   74,   74,   74,
+       74,   74,   91,   74,   74,   74,   74,   80,   74,   74,
+       74,   84,  140,   84,   84,  140,   97,   79,   97,   97,
+      140,   84,   88,   88,   88,   88,   97,   88,   88,   88,
+       88,   88,   88,   77,   88,   88,   88,   88,   76,   88,
+       88,   88,   89,   89,   89,   89,   89,   89,   89,   89,
+       89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
+
+       89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
+       89,   89,   89,   89,   89,   89,   89,   89,   89,   90,
+       90,   90,   90,   75,   90,   90,   90,   90,   90,   90,
+       70,   90,   90,   90,   90,   67,   90,   90,   90,   90,
+       95,   95,   66,   95,   95,   95,   95,   95,   95,   95,
+       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
+       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
+       95,   95,   95,   95,   95,   95,   95,   99,   65,   99,
+       99,  102,  156,  102,  102,  156,  135,   99,  135,  135,
+       60,  102,  109,  109,   59,  109,  109,  109,  109,  109,
+
       109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
       109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
-      109,  109,  109,  109,  109,  109,  109,  109,  109,  111,
+      109,  109,  109,  109,  109,  109,  109,  109,  109,  110,
+      110,  174,  110,  174,  110,  110,  110,  161,   58,  161,
+      161,  110,  110,  110,  110,   57,  110,  110,  110,  111,
+      166,  114,  111,  114,  114,  116,   55,  116,  116,  111,
+      193,  114,  193,  166,   54,  116,  124,  124,   53,  124,
+      124,  124,  124,  124,  169,   47,  169,  169,  124,  124,
+      124,  124,   46,  124,  124,  124,  126,  126,   45,  126,
+      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
 
-       79,  131,  111,  131,  131,   72,   71,   70,  111,  115,
-      115,   69,  115,  115,  115,  115,  115,  115,  115,  115,
-      115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
-      115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
-      115,  115,  116,  116,   66,  116,  140,  116,  116,  140,
-       65,   64,   63,  116,  116,  116,   61,  116,  116,  116,
-      117,   60,   59,  117,  144,  121,  144,  144,  121,  117,
-      119,  119,   58,  119,  121,  119,  119,  119,   57,   52,
-       51,  119,  119,  119,   50,  119,   49,  119,  119,  125,
-      125,   48,  125,  125,  125,  125,  150,   42,  150,  150,
+      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
+      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
+      126,  126,  126,  134,  134,   43,  134,  134,  134,  134,
+      134,  178,   42,   41,  178,  134,  134,  134,  134,   40,
+      134,  134,  134,  145,   39,  182,  145,  182,  182,  188,
+       38,  188,  188,  145,  147,  147,   37,  147,  147,  147,
+      147,  147,  147,  147,  147,  147,  147,  147,  147,  147,
+      147,  147,  147,  147,  147,  147,  147,  147,  147,  147,
+      147,  147,  147,  147,  147,  147,  147,  147,  147,  147,
+      147,  149,   27,   26,  149,   17,   16,   15,   14,   10,
 
-      125,  125,  125,   41,  125,  125,  125,  127,  127,   40,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      129,  129,   38,  129,  129,  129,  129,  129,  129,  129,
-      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
-      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
-      129,  129,  129,  130,   37,   36,  130,   35,   25,   24,
-      130,   16,  130,  132,  132,   15,  132,  132,  132,  132,
-       14,   10,    3,    0,  132,  132,  132,    0,  132,  132,
+        3,  149,  153,  153,    0,  153,  153,  153,  153,  153,
+      153,  153,  153,  153,  153,  153,  153,  153,  153,  153,
+      153,  153,  153,  153,  153,  153,  153,  153,  153,  153,
+      153,  153,  153,  153,  153,  153,  153,  153,  153,  154,
+      154,    0,  154,    0,  154,  154,  154,    0,    0,    0,
+        0,  154,  154,  154,  154,    0,  154,  154,  154,  155,
+        0,    0,  155,    0,  159,    0,    0,  159,    0,  155,
+      157,  157,    0,  157,  159,  157,  157,  157,  157,    0,
+        0,    0,  157,  157,  157,  157,    0,  157,    0,  157,
+      157,  163,  163,    0,  163,  163,  163,  163,  163,    0,
 
-      132,  137,  137,    0,  137,  137,  137,  137,  137,  137,
-      137,  137,  137,  137,  137,  137,  137,  137,  137,  137,
-      137,  137,  137,  137,  137,  137,  137,  137,  137,  137,
-      137,  137,  137,  137,  138,  138,    0,  138,    0,  138,
-      138,    0,    0,    0,    0,  138,  138,  138,    0,  138,
-      138,  138,  139,    0,    0,  139,    0,  142,    0,    0,
-      142,  139,  141,  141,    0,  141,  142,  141,  141,  141,
-        0,    0,    0,  141,  141,  141,    0,  141,    0,  141,
-      141,  146,  146,    0,  146,  146,  146,  146,    0,    0,
-        0,    0,  146,  146,  146,    0,  146,  146,  146,  148,
+        0,    0,    0,  163,  163,  163,  163,    0,  163,  163,
+      163,  165,  165,    0,  165,  165,  165,  165,  165,  165,
+      165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
+      165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
+      165,  165,  165,  165,  165,  165,  165,  165,  167,  167,
+        0,  167,  167,  167,  167,  167,  167,  167,  167,  167,
+      167,  167,  167,  167,  167,  167,  167,  167,  167,  167,
+      167,  167,  167,  167,  167,  167,  167,  167,  167,  167,
+      167,  167,  167,  167,  167,  168,    0,    0,  168,    0,
+        0,    0,    0,  168,    0,  168,  170,  170,    0,  170,
 
-      148,    0,  148,  148,  148,  148,  148,  148,  148,  148,
-      148,  148,  148,  148,  148,  148,  148,  148,  148,  148,
-      148,  148,  148,  148,  148,  148,  148,  148,  148,  148,
-      148,  148,  149,    0,    0,  149,    0,    0,    0,    0,
-        0,  149,  151,  151,    0,  151,  151,  151,  151,    0,
-        0,    0,    0,  151,  151,  151,    0,  151,  151,  151,
-      153,    0,  154,  153,  154,  154,    0,    0,    0,  153,
-        0,  154,  156,  156,  156,  156,  156,  156,  156,  156,
-      156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
-      156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
+      170,  170,  170,  170,    0,    0,    0,    0,  170,  170,
+      170,  170,    0,  170,  170,  170,  175,  175,    0,  175,
+      175,  175,  175,  175,  175,  175,  175,  175,  175,  175,
+      175,  175,  175,  175,  175,  175,  175,  175,  175,  175,
+      175,  175,  175,  175,  175,  175,  175,  175,  175,  175,
+      175,  175,  175,  176,  176,    0,  176,    0,  176,  176,
+      176,    0,    0,    0,    0,  176,  176,  176,  176,    0,
+      176,  176,  176,  177,    0,    0,  177,    0,  180,    0,
+        0,  180,    0,  177,  179,  179,    0,  179,  180,  179,
+      179,  179,  179,    0,    0,    0,  179,  179,  179,  179,
 
-      156,  156,  156,  156,  156,  156
+        0,  179,    0,  179,  179,  184,  184,    0,  184,  184,
+      184,  184,  184,    0,    0,    0,    0,  184,  184,  184,
+      184,    0,  184,  184,  184,  186,  186,    0,  186,  186,
+      186,  186,  186,  186,  186,  186,  186,  186,  186,  186,
+      186,  186,  186,  186,  186,  186,  186,  186,  186,  186,
+      186,  186,  186,  186,  186,  186,  186,  186,  186,  186,
+      186,  186,  187,    0,    0,  187,    0,    0,    0,    0,
+        0,    0,  187,  189,  189,    0,  189,  189,  189,  189,
+      189,    0,    0,    0,    0,  189,  189,  189,  189,    0,
+      189,  189,  189,  191,    0,  192,  191,  192,  192,    0,
+
+        0,    0,    0,  191,    0,  192,  195,    0,  195,  195,
+      196,    0,  196,  196,  197,    0,  197,  197,  198,    0,
+      198,  198,  199,    0,  199,  199,  200,    0,  200,  200,
+      201,    0,  201,  201,  202,  202,  203,  203,  203,  203,
+      204,  204,    0,  204,  205,  205,  205,  205,  206,  206,
+      206,  206,  207,  207,  207,  207,  208,    0,  208,  208,
+      209,  209,  209,  209,  210,    0,  210,  210,  211,    0,
+      211,  211,  212,    0,  212,  212,  213,    0,  213,  213,
+      214,    0,  214,  214,  215,    0,  215,  215,  216,    0,
+      216,  216,  217,    0,  217,  217,  218,    0,  218,  218,
+
+      219,    0,  219,  219,  220,    0,  220,  220,  221,    0,
+      221,  221,  222,    0,  222,  222,  223,    0,  223,  223,
+      194,  194,  194,  194,  194,  194,  194,  194,  194,  194,
+      194,  194,  194,  194,  194,  194,  194,  194,  194,  194,
+      194,  194,  194,  194,  194,  194,  194,  194,  194,  194,
+      194,  194,  194,  194,  194,  194,  194,  194
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -806,6 +921,8 @@
 set_config_parameter(config_entry_t *conf, char *subsystem_name, char 
*driver_name,
                       char *option, char *value);
 
+static char *
+purge_comments(char *comments);
 
 static int
 parse_name(char *name, name_value_pair* nvps, char *what, int oldval); /* 
Parses a string with a name value pair */
@@ -1014,7 +1131,7 @@
 char *
 crop_value(char *yytext);
 
-#line 1018 "lex.yy.c"
+#line 1135 "lex.yy.c"
 
 #define INITIAL 0
 
@@ -1165,10 +1282,10 @@
        register char *yy_cp, *yy_bp;
        register int yy_act;
     
-#line 315 "config.l"
+#line 317 "config.l"
 
 
-#line 1172 "lex.yy.c"
+#line 1289 "lex.yy.c"
 
        if ( (yy_init) )
                {
@@ -1221,13 +1338,13 @@
                        while ( yy_chk[yy_base[yy_current_state] + yy_c] != 
yy_current_state )
                                {
                                yy_current_state = (int) 
yy_def[yy_current_state];
-                               if ( yy_current_state >= 157 )
+                               if ( yy_current_state >= 195 )
                                        yy_c = yy_meta[(unsigned int) yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + 
(unsigned int) yy_c];
                        ++yy_cp;
                        }
-               while ( yy_base[yy_current_state] != 973 );
+               while ( yy_base[yy_current_state] != 1421 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -1252,9 +1369,17 @@
                        goto yy_find_action;
 
 case 1:
+/* rule 1 can match eol */
 YY_RULE_SETUP
-#line 317 "config.l"
+#line 319 "config.l"
 {
+      gfx_update_conf(&(conf[cur_section].gfx_options), 
purge_comments(yytext));
+}
+       YY_BREAK
+case 2:
+YY_RULE_SETUP
+#line 323 "config.l"
+{
        char *filename = strchr(yytext, '<');
        char *end = strchr(filename, '>');
 
@@ -1270,9 +1395,9 @@
        YY_NEW_FILE;
 }
        YY_BREAK
-case 2:
+case 3:
 YY_RULE_SETUP
-#line 333 "config.l"
+#line 339 "config.l"
 {
        char *cleanup;
 
@@ -1313,9 +1438,9 @@
 
 }
        YY_BREAK
-case 3:
+case 4:
 YY_RULE_SETUP
-#line 374 "config.l"
+#line 380 "config.l"
 {
 
   char *p2;
@@ -1334,9 +1459,9 @@
        conf[cur_section].version = version_parse(yytext);
 }
        YY_BREAK
-case 4:
+case 5:
 YY_RULE_SETUP
-#line 392 "config.l"
+#line 398 "config.l"
 if (cur_section) {
 
   char *p2;
@@ -1357,9 +1482,9 @@
        conf[cur_section].resource_dir = sci_strdup(yytext);
 }
        YY_BREAK
-case 5:
+case 6:
 YY_RULE_SETUP
-#line 412 "config.l"
+#line 418 "config.l"
 {
 
   char *p2;
@@ -1378,9 +1503,9 @@
        strcpy (conf[cur_section].debug_mode, yytext);
 }
        YY_BREAK
-case 6:
+case 7:
 YY_RULE_SETUP
-#line 431 "config.l"
+#line 437 "config.l"
 {
 /* driver parameters */
        char *subsys_name = yytext;
@@ -1411,9 +1536,9 @@
 
 }
        YY_BREAK
-case 7:
+case 8:
 YY_RULE_SETUP
-#line 462 "config.l"
+#line 468 "config.l"
 { /* Normal config option */
        char *option_str = yytext;
        char *value_str = yytext;
@@ -1435,39 +1560,39 @@
 
 }
        YY_BREAK
-case 8:
+case 9:
 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
 (yy_c_buf_p) = yy_cp -= 1;
 YY_DO_BEFORE_ACTION; /* set up yytext again */
 YY_RULE_SETUP
-#line 485 "config.l"
+#line 491 "config.l"
 /* Ignore comments */
        YY_BREAK
-case 9:
-/* rule 9 can match eol */
+case 10:
+/* rule 10 can match eol */
 YY_RULE_SETUP
-#line 487 "config.l"
+#line 493 "config.l"
 /* Eat whitespace */
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 489 "config.l"
+#line 495 "config.l"
 {
 
        yy_delete_buffer(YY_CURRENT_BUFFER );
        yyterminate();
 }
        YY_BREAK
-case 10:
+case 11:
 YY_RULE_SETUP
-#line 495 "config.l"
+#line 501 "config.l"
 printf("Unrecognized option: '%s'\n", yytext);
        YY_BREAK
-case 11:
+case 12:
 YY_RULE_SETUP
-#line 497 "config.l"
+#line 503 "config.l"
 ECHO;
        YY_BREAK
-#line 1471 "lex.yy.c"
+#line 1596 "lex.yy.c"
 
        case YY_END_OF_BUFFER:
                {
@@ -1749,7 +1874,7 @@
                while ( yy_chk[yy_base[yy_current_state] + yy_c] != 
yy_current_state )
                        {
                        yy_current_state = (int) yy_def[yy_current_state];
-                       if ( yy_current_state >= 157 )
+                       if ( yy_current_state >= 195 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned 
int) yy_c];
@@ -1777,11 +1902,11 @@
        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                {
                yy_current_state = (int) yy_def[yy_current_state];
-               if ( yy_current_state >= 157 )
+               if ( yy_current_state >= 195 )
                        yy_c = yy_meta[(unsigned int) yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) 
yy_c];
-       yy_is_jam = (yy_current_state == 156);
+       yy_is_jam = (yy_current_state == 194);
 
        return yy_is_jam ? 0 : yy_current_state;
 }
@@ -2431,7 +2556,7 @@
 #undef YY_DECL_IS_OURS
 #undef YY_DECL
 #endif
-#line 497 "config.l"
+#line 503 "config.l"
 
 
 
@@ -2993,6 +3118,10 @@
        conf->gfx_options.text_xlate_filter = GFX_XLATE_FILTER_NONE;
        conf->gfx_options.dirty_frames = GFXOP_DIRTY_FRAMES_CLUSTERS;
        conf->gfx_options.pic0_antialiasing = GFXR_ANTIALIASING_NONE;
+       for (i = 0; i < GFX_RESOURCE_TYPES_NR; i++) {
+               conf->gfx_options.res_conf.assign[i] = NULL;
+               conf->gfx_options.res_conf.mod[i] = NULL;
+       }
 
        conf->gfx_driver_name = NULL;
        conf->pcmout_driver = pcmout_find_driver(NULL);
@@ -3041,3 +3170,25 @@
 #endif
 }
 
+static char *
+purge_comments(char *comments)
+{
+       char *c = comments;
+       int overwrite = 0;
+       char ch;
+
+       /* Tear out all comments */
+       while ((ch = *c)) {
+               if (ch == '#')
+                       overwrite = 1;
+               if (ch == '\n')
+                       overwrite = 0;
+               if (overwrite)
+                       *c = ' ';
+
+               c++;
+       }
+
+       return comments;
+}
+

Modified: freesci/trunk/src/config.l
===================================================================
--- freesci/trunk/src/config.l  2006-02-01 09:39:40 UTC (rev 1512)
+++ freesci/trunk/src/config.l  2006-02-04 19:47:58 UTC (rev 1513)
@@ -93,6 +93,8 @@
 set_config_parameter(config_entry_t *conf, char *subsystem_name, char 
*driver_name,
                       char *option, char *value);
 
+static char *
+purge_comments(char *comments);
 
 static int
 parse_name(char *name, name_value_pair* nvps, char *what, int oldval); /* 
Parses a string with a name value pair */
@@ -314,6 +316,10 @@
 
 %%
 
+(view|pic|cursor)[^_A-Za-z0-9"("]*"("([^";"]|"#"[^\n]*\n)*";" {
+      gfx_update_conf(&(conf[cur_section].gfx_options), 
purge_comments(yytext));
+}
+
 "%include"[^<\n]*<[^>\n]*> {
        char *filename = strchr(yytext, '<');
        char *end = strchr(filename, '>');
@@ -1054,6 +1060,10 @@
        conf->gfx_options.text_xlate_filter = GFX_XLATE_FILTER_NONE;
        conf->gfx_options.dirty_frames = GFXOP_DIRTY_FRAMES_CLUSTERS;
        conf->gfx_options.pic0_antialiasing = GFXR_ANTIALIASING_NONE;
+       for (i = 0; i < GFX_RESOURCE_TYPES_NR; i++) {
+               conf->gfx_options.res_conf.assign[i] = NULL;
+               conf->gfx_options.res_conf.mod[i] = NULL;
+       }
 
        conf->gfx_driver_name = NULL;
        conf->pcmout_driver = pcmout_find_driver(NULL);
@@ -1101,3 +1111,25 @@
        conf->midi_device = midi_find_device("adlibemu");
 #endif
 }
+
+static char *
+purge_comments(char *comments)
+{
+       char *c = comments;
+       int overwrite = 0;
+       char ch;
+
+       /* Tear out all comments */
+       while ((ch = *c)) {
+               if (ch == '#')
+                       overwrite = 1;
+               if (ch == '\n')
+                       overwrite = 0;
+               if (overwrite)
+                       *c = ' ';
+
+               c++;
+       }
+
+       return comments;
+}

Modified: freesci/trunk/src/gfx/Makefile.am
===================================================================
--- freesci/trunk/src/gfx/Makefile.am   2006-02-01 09:39:40 UTC (rev 1512)
+++ freesci/trunk/src/gfx/Makefile.am   2006-02-04 19:47:58 UTC (rev 1513)
@@ -8,7 +8,7 @@
 libscigraphics_a_SOURCES = font.c  gfx_resource.c  gfx_support.c \
        gfx_tools.c  operations.c  resmgr.c  sbtree.c  widgets.c \
        menubar.c sci_widgets.c antialias.c gfx_console.c        \
-       font-5x8.c font-6x10.c
+       font-5x8.c font-6x10.c gfx_res_options.c
 
 check_PROGRAMS = gfx_test
 gfx_test_LDADD = libscigraphics.a drivers/libscidrivers.a @X_LIBS@ 
@ac_glx_libraries@ @ac_ggi_libraries@ @ac_readline@ @ac_curses_libraries@ 
@ac_png_libraries@ -lm @SDL_LIBS@

Added: freesci/trunk/src/gfx/gfx_res_options.c
===================================================================
--- freesci/trunk/src/gfx/gfx_res_options.c     2006-02-01 09:39:40 UTC (rev 
1512)
+++ freesci/trunk/src/gfx/gfx_res_options.c     2006-02-04 19:47:58 UTC (rev 
1513)
@@ -0,0 +1,651 @@
+/***************************************************************************
+ gfx_res_options.c  Copyright (C) 2002 Christoph Reichenbach
+
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public Licence as
+ published by the Free Software Foundaton; either version 2 of the
+ Licence, or (at your option) any later version.
+
+ It is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ merchantibility or fitness for a particular purpose. See the
+ GNU General Public Licence for more details.
+
+ You should have received a copy of the GNU General Public Licence
+ along with this program; see the file COPYING. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+
+
+ Please contact the maintainer for any program-related bug reports or
+ inquiries.
+
+ Current Maintainer:
+
+    Christoph Reichenbach (CR) <address@hidden>
+
+***************************************************************************/
+
+#include <gfx_system.h>
+#include <gfx_options.h>
+#include <gfx_resmgr.h>
+
+#define DEBUG
+
+static gfx_res_pattern_list_t*
+pattern_list_insert(gfx_res_pattern_list_t *list, int min, int max)
+{
+       gfx_res_pattern_list_t *retval = malloc(sizeof(gfx_res_pattern_list_t));
+       retval->pattern.min = min;
+       retval->pattern.max = max;
+       retval->next = list;
+
+       return retval;
+}
+
+static int
+pattern_list_len(gfx_res_pattern_list_t *list)
+{
+       int v = 0;
+       while (list) {
+               ++v;
+               list = list->next;
+       }
+
+       return v;
+}
+
+static void
+pattern_list_flatten(gfx_res_pattern_t *dest, gfx_res_pattern_list_t *list)
+{
+       while (list) {
+               *dest++ = list->pattern;
+               list = list->next;
+       }
+}
+
+static inline void
+pattern_list_free(gfx_res_pattern_list_t *list)
+{
+       if (list)
+               pattern_list_free(list->next);
+
+       free(list);
+}
+
+
+static inline int
+extract_pattern(gfx_res_pattern_list_t **destp,
+               char *src, int offset)
+{
+       char *src_orig = src - offset;
+       int final = 0;
+       int wildcard = 0;
+
+       while (!final) {
+               char *end = strchr(src, ',');
+               if (end)
+                       *end = 0;
+               else
+                       final = 1;
+
+               while (*src && isblank(*src))
+                       ++src;
+
+               if (*src == '*'
+                   || *src == '_') {
+                       wildcard = 1;
+                       ++src;
+               } else if (*src == '.' || isdigit(*src)) {
+                       char *endp;
+                       int start = strtol(src, &endp, 0);
+
+                       if (*src == '.'
+                           && src[1] == '.') {
+                               start = GFX_RES_PATTERN_MIN;
+                               endp = src;
+                       }
+
+                       src = endp;
+
+                       while (*src && isblank(*src))
+                               ++src;
+
+                       if (*src) {
+                               int stop;
+                               if (*src == '.'
+                                   && src[1] == '.') {
+
+                                       src += 2;
+                                       while (*src && isblank(*src))
+                                               ++src;
+
+                                       if (!*src)
+                                               stop = GFX_RES_PATTERN_MAX;
+                                       else if (!isdigit(*src)) {
+                                               if (end)
+                                                       *end = ',';
+                                               goto lexical_error_label;
+                                       }
+
+                                       stop = strtol(src, &endp, 0);
+                                       src = endp;
+
+                                       *destp = pattern_list_insert(*destp,
+                                                                    start, 
stop);
+
+                               } else { /* No ellipsis */
+                                       if (end)
+                                               *end = ',';
+                                       goto lexical_error_label;
+                               }
+                       } else /* End of sub-pattern */
+                               *destp = pattern_list_insert(*destp,
+                                                            start, start);
+
+                       while (*src && isblank(*src))
+                               ++src;
+
+                       if (*src) {
+                               if (end)
+                                       *end = ',';
+                               goto lexical_error_label;
+                       }
+
+               } else {
+                       if (end)
+                               *end = ',';
+                       sciprintf("[gfx-conf] Unexpected character '%c'\n",
+                                 *src);
+                       goto lexical_error_label;
+               }
+               
+               if (!final) {
+                       *end = ',';
+                       src = end + 1;
+               }
+       }
+
+       if (wildcard) {
+               pattern_list_free(*destp);
+               *destp = NULL;
+       }
+
+       return 0;
+
+ lexical_error_label:
+       sciprintf("[gfx-conf] Lexical error in pattern at offset %d\n",
+                 src - src_orig);
+       return 1;
+}
+
+static int
+extract_mod_rule(char *src, gfx_res_mod_t *rule)
+{
+       char *orig_src = src;
+       char *endp;
+       float f[3];
+       int i;
+
+       rule->type = GFX_RES_MULTIPLY_FIXED;
+
+       if (isdigit(*src) || *src == '.') {
+               f[0] = f[1] = f[2] = strtod(src, &endp);
+
+               if (*endp)
+                       goto mod_error_label;
+       } else if (*src == '(') {
+               i = 0;
+               ++src;
+
+               do {
+                       while (*src && isblank(*src))
+                               ++src;
+                       if (!*src || !(isdigit(*src) || *src == '.')) {
+                               sciprintf("[gfx-conf] Unexpected character 
'%c'\n",
+                                         *src);
+                               goto mod_error_label;
+                       }
+                       f[i++] = strtod(src, &endp);
+
+                       src = endp;
+
+                       while (*src && isblank(*src))
+                               ++src;
+
+                       if ((i == 3) && *src != ')') {
+                               sciprintf("[gfx-conf] Error: Expected ')' at 
end of modification rule\n");
+                               goto mod_error_label;
+                       } else if (i<3 && !isdigit(*src) && *src != '.' && *src 
!= ',') {
+                               sciprintf("[gfx-conf] Error: Expected ',' as 
separator in modification rule, not '%c'\n",
+                                         *src);
+                               goto mod_error_label;
+                       }
+                       ++src;
+               } while (i < 3);
+
+               if (*src) {
+                       sciprintf("[gfx-conf] Error: Trailing garbage after 
modification rule\n");
+                       goto mod_error_label;
+               }
+
+       } else
+               goto mod_error_label;
+
+       for (i = 0; i < 3; i++) {
+               int v = (int)(f[i] * 16.0);
+               rule->mod.factor[i] = (v > 255) ? 255 : v;
+       }
+
+       return 0;
+ mod_error_label:
+       sciprintf("[gfx-conf] Ill-formed modification rule '%s'\n",
+                 orig_src);
+       return 1;
+}
+
+
+extern gfx_pixmap_color_t gfx_sci0_image_colors[][GFX_SCI0_IMAGE_COLORS_NR];
+
+#define PREDEFINED_PALETTES_NR 4
+static int
+extract_assign_rule(char *src, gfx_res_assign_t *rule)
+{
+       char *orig_src = src;
+       struct {
+               char *name;
+               int colors_nr;
+               gfx_pixmap_color_t *colors;
+       } predefined_palettes[PREDEFINED_PALETTES_NR] = {
+               {"default", 16, (gfx_pixmap_color_t *) 
&(gfx_sci0_image_colors[0])},
+               {"amiga", 16, (gfx_pixmap_color_t *) 
&(gfx_sci0_image_colors[1])},
+               {"gray", 16, (gfx_pixmap_color_t *) 
&(gfx_sci0_image_colors[2])},
+               {"grey", 16, (gfx_pixmap_color_t *) 
&(gfx_sci0_image_colors[2])},
+       };
+       int i;
+
+       rule->type = GFX_RES_ASSIGN_TYPE_PALETTE;
+
+       for (i = 0; i < PREDEFINED_PALETTES_NR; i++)
+               if (!strcmp(src, predefined_palettes[i].name)) {
+                       rule->assign.palette.colors_nr =
+                               predefined_palettes[i].colors_nr;
+                       rule->assign.palette.colors =
+                               predefined_palettes[i].colors;
+                       return 0;
+               }
+
+       sciprintf("[gfx-conf] Unknown palette '%s'\n", src);
+       return 1;
+       /*
+ assign_error_label:
+       sciprintf("[gfx-conf] Ill-formed assignment rule '%s'\n",
+                 orig_src);
+       return 1;
+       */
+}
+
+#define CLASSES_NR 3
+int
+gfx_update_conf(gfx_options_t *options, char *str)
+{
+       int total_patterns;
+       int mod = 0; /* Modifier or assignment rule? */
+       char *orig_str = str;
+       char *paren_open;
+       char *sem_end;
+
+       int fields_nr; /* Number of fields a restriction is possible by.
+                      ** cursors:1, pics:2, views:3. */
+       struct {
+               char *class_name;
+               int class_id;
+               int fields_nr;
+       } classes[CLASSES_NR] = {
+               {"view", GFX_RESOURCE_TYPE_VIEW, 3},
+               {"pic", GFX_RESOURCE_TYPE_PIC, 2},
+               {"cursor", GFX_RESOURCE_TYPE_CURSOR, 1},
+       };
+       gfx_res_conf_t *conf = malloc(sizeof(gfx_res_conf_t));
+       gfx_res_pattern_list_t *patterns = NULL;
+       gfx_res_pattern_list_t *loops = NULL;
+       gfx_res_pattern_list_t *cels = NULL;
+       gfx_res_pattern_list_t **fields[3] = {
+               &patterns, &loops, &cels
+       };
+       int i;
+       int fieldcnt;
+       char *pat_name_str;
+
+       /* Extract pattern(s) */
+       while (*str && isblank(*str))
+               ++str;
+
+       fields_nr = -1;
+       for (i = 0; i < CLASSES_NR; i++) {
+               int len = strlen(classes[i].class_name);
+
+               if (!strncmp(str, classes[i].class_name, len)) {
+                       pat_name_str = classes[i].class_name;
+                       conf->type = classes[i].class_id;
+                       fields_nr = classes[i].fields_nr;
+                       str += len;
+                       break;
+               }
+       }
+
+       if (fields_nr == -1) {
+               sciprintf("[gfx-conf] Unexpected pattern class: Expected one of 
'view', 'pic', 'cursor'\n");
+               goto failure_label;
+       }
+
+       fieldcnt = 0;
+       do {
+               while (*str && isblank(*str))
+                       ++str;
+
+               if (!*str)
+                       goto unexpected_end;
+
+               if (*str == '='
+                   || *str == '*')
+                       break;
+
+               if (*str == '(') {
+                       char *end = strchr(str, ')');
+
+                       if (fieldcnt >= fields_nr) {
+                               sciprintf("[gfx-conf] Error: Patterns of class 
'%s' may only be"
+                                         " constrained by %d arguments\n",
+                                         pat_name_str, fields_nr);
+                               goto failure_label;
+                       }
+
+                       if (!end) {
+                               sciprintf("[gfx-conf] Unmatched parentheses at 
offset %d\n",
+                                         str - orig_str);
+                               goto failure_label;
+                       }
+                       *end = 0;
+
+                       if (extract_pattern(fields[fieldcnt++],
+                                           str + 1,
+                                           str + 1 - orig_str))
+                               goto failure_label;
+
+                       *end = ')';
+                       str = end + 1;
+
+                       continue;
+               }
+
+               sciprintf("[gfx-conf] Lexical error in pattern at offset %d: 
Unexpected '%c'\n",
+                         str - orig_str, *str);
+               goto failure_label;
+       } while (1);
+                   
+
+       /* Flatten patterns */
+       conf->patterns = NULL;
+       total_patterns = conf->patterns_nr = pattern_list_len(patterns);
+       total_patterns += (conf->loops_nr = pattern_list_len(loops));
+       total_patterns += (conf->cels_nr = pattern_list_len(cels));
+
+       conf->patterns = malloc(sizeof(gfx_res_pattern_t) * total_patterns);
+       pattern_list_flatten(conf->patterns, patterns);
+       pattern_list_flatten(conf->patterns + conf->patterns_nr, loops);
+       pattern_list_flatten(conf->patterns + conf->patterns_nr + 
conf->loops_nr, cels);
+
+       pattern_list_free(patterns);
+       patterns = NULL;
+       pattern_list_free(loops);
+       loops = NULL;
+       pattern_list_free(cels);
+       cels = NULL;
+
+       /* Parse remainder */
+       if (*str == '*') {
+               mod = 1;
+               ++str;
+       }
+
+       if (*str != '=') {
+               sciprintf("[gfx-conf] Expected '='\n");
+               goto failure_label;
+       }
+
+       do { ++str; }
+       while (*str && isblank(*str));
+
+       sem_end = strchr(str, ';');
+       if (!sem_end) {
+               sciprintf("[gfx-conf] Expected ';' at end of rule\n");
+               goto failure_label;
+       }
+       do { *sem_end-- = 0; }
+       while (sem_end >= str
+              && isblank(*sem_end));
+
+       if (mod) {
+               if (extract_mod_rule(str, &conf->conf.mod))
+                       goto failure_label;
+       } else {
+               if (extract_assign_rule(str, &conf->conf.assign))
+                       goto failure_label;
+       }
+
+       /* Write back into options */
+       if (mod) {
+               conf->next = options->res_conf.mod[conf->type];
+               options->res_conf.mod[conf->type] = conf;
+       } else {
+               conf->next = options->res_conf.assign[conf->type];
+               options->res_conf.assign[conf->type] = conf;
+       }
+
+       return 0;
+
+       /* Error handling */
+unexpected_end:
+       sciprintf("[gfx-conf] Unexpected end of pattern encountered\n");
+ failure_label:
+       sciprintf("[gfx-conf] Error occured in: '%s'\n", orig_str);
+       pattern_list_free(patterns);
+       pattern_list_free(loops);
+       pattern_list_free(cels);
+       if (conf->patterns)
+               free(conf->patterns);
+       free(conf);
+       return 1;
+}
+
+static inline int
+matches_patternlist(gfx_res_pattern_t *patterns, int nr, int val)
+{
+       int i;
+       for (i = 0; i < nr; i++)
+               if (patterns[i].min <= val
+                   && patterns[i].max >= val)
+                       return 1;
+
+       return 0;
+}
+
+#ifdef DEBUG
+static void
+print_pattern(gfx_res_pattern_t *pat)
+{
+       fprintf(stderr, "[%d..%d]",
+               pat->min, pat->max);
+}
+#endif
+
+static inline int
+resource_matches_patternlists(gfx_res_conf_t *conf,
+                             int type, int nr, int loop, int cel)
+{
+       int loc;
+#ifdef DEBUG
+       int i;
+       fprintf(stderr, "[DEBUG:gfx-res] Trying to match against %d/%d/%d 
choices\n",
+               conf->patterns_nr, conf->loops_nr, conf->cels_nr);
+       for (i = 0; i < conf->patterns_nr; i++) {
+               fprintf(stderr, "[DEBUG:gfx-res] Pat #%d: ", i);
+               print_pattern(conf->patterns + i);
+               fprintf(stderr, "\n");
+       }
+       loc = conf->patterns_nr;
+       for (i = 0; i < conf->loops_nr; i++) {
+               fprintf(stderr, "[DEBUG:gfx-res] Loop #%d: ", i);
+               print_pattern(conf->patterns + i + loc);
+               fprintf(stderr, "\n");
+       }
+       loc += conf->loops_nr;
+       for (i = 0; i < conf->cels_nr; i++) {
+               fprintf(stderr, "[DEBUG:gfx-res] Cel #%d: ", i);
+               print_pattern(conf->patterns + i + loc);
+               fprintf(stderr, "\n");
+       }
+#endif
+       if (conf->patterns_nr &&
+           !matches_patternlist(conf->patterns,
+                                conf->patterns_nr,
+                                nr))
+               return 0;
+
+       if (type == GFX_RESOURCE_TYPE_CURSOR)
+               return 1;
+
+       /* Otherwise, we must match at least the loop (pic)
+       ** and, for views, the cel as well  */
+       loc = conf->patterns_nr;
+       if (conf->loops_nr &&
+           !matches_patternlist(conf->patterns + loc,
+                                conf->loops_nr,
+                                loop))
+               return 0;
+
+       if (type != GFX_RESOURCE_TYPE_VIEW)
+               return 1;
+
+       loc += conf->loops_nr;
+
+       if (!conf->cels_nr)
+               return 1;
+       
+       return matches_patternlist(conf->patterns + loc,
+                                  conf->cels_nr,
+                                  cel);
+}
+
+static inline gfx_res_conf_t *
+find_match(gfx_res_conf_t *conflist,
+          int type, int nr, int loop, int cel)
+{
+       while (conflist) {
+               if (resource_matches_patternlists(conflist,
+                                                 type, nr, loop, cel)) {
+#ifdef DEBUG
+                       fprintf(stderr, "[DEBUG:gfx-res] Found match!\n");
+#endif
+                       return conflist;
+               }
+
+               conflist = conflist->next;
+       }
+       return NULL;
+}
+
+void
+apply_assign(gfx_res_assign_t *conf, gfx_pixmap_t *pxm)
+{
+       /* Has a dynamically allocated palette? Must clean up */
+       if (!(pxm->flags & GFX_PIXMAP_FLAG_EXTERNAL_PALETTE)) {
+               if (pxm->colors)
+                       free(pxm->colors);
+               pxm->flags |= GFX_PIXMAP_FLAG_EXTERNAL_PALETTE;
+       }
+
+       pxm->colors_nr = conf->assign.palette.colors_nr;
+       pxm->colors = conf->assign.palette.colors;
+}
+
+void
+apply_mod(gfx_res_mod_t *mod, gfx_pixmap_t *pxm)
+{
+       gfx_pixmap_color_t *pal = pxm->colors;
+       int i, pal_size = pxm->colors_nr;
+
+       /* Does not have a dynamically allocated palette? Must dup current one 
*/
+       if (pxm->flags & GFX_PIXMAP_FLAG_EXTERNAL_PALETTE) {
+               int size = sizeof(gfx_pixmap_color_t) * pal_size;
+               pxm->colors = malloc(size);
+               memcpy(pxm->colors, pal, size);
+               pal = pxm->colors;
+               pxm->flags &= ~GFX_PIXMAP_FLAG_EXTERNAL_PALETTE;
+               /* Flag for later deallocation */
+       }
+
+       switch (mod->type) {
+
+       case GFX_RES_MULTIPLY_FIXED: {
+               for (i = 0; i < pal_size; i++) {
+                       int v;
+
+#define UPDATE_COL(nm, idx)                        \
+                       v = pal[i].nm;             \
+                       v *= mod->mod.factor[idx]; \
+                       v >>= 4;                   \
+                       pal[i].nm = (v > 255)? 255 : v;
+
+                       UPDATE_COL(r, 0);
+                       UPDATE_COL(g, 1);
+                       UPDATE_COL(b, 2);
+#undef UPDATE_COL
+               }
+               break;
+       }
+
+       default:
+               GFXERROR("Using unexpected visual resource modifier %d\n", 
mod->type);
+       }
+}
+
+int
+gfx_get_res_config(gfx_options_t *options, gfx_pixmap_t *pxm)
+{
+       int restype = GFXR_RES_TYPE(pxm->ID);
+       int nr = GFXR_RES_NR(pxm->ID);
+       int loop = pxm->loop;
+       int cel = pxm->cel;
+
+       gfx_res_conf_t *conf;
+
+#ifdef DEBUG
+       fprintf(stderr, "[DEBUG:gfx-res] Trying to conf %d/%d/%d/%d (ID=%d)\n",
+               restype, nr, loop, cel, pxm->ID);
+#endif
+
+       if (pxm->ID < 0 || restype < 0 || restype >= GFX_RESOURCE_TYPES_NR)
+               return 1; /* Not appropriate */
+
+       conf = find_match(options->res_conf.assign[restype],
+                         restype, nr, loop, cel);
+
+       if (conf)
+               apply_assign(&(conf->conf.assign), pxm);
+
+       conf = options->res_conf.mod[restype];
+       while (conf) {
+               conf = find_match(conf,
+                                 restype, nr, loop, cel);
+               if (conf) {
+                       apply_mod(&(conf->conf.mod), pxm);
+                       conf = conf->next;
+               }
+       }
+       fflush(NULL);
+
+       return 0;
+}

Modified: freesci/trunk/src/gfx/resmgr.c
===================================================================
--- freesci/trunk/src/gfx/resmgr.c      2006-02-01 09:39:40 UTC (rev 1512)
+++ freesci/trunk/src/gfx/resmgr.c      2006-02-04 19:47:58 UTC (rev 1513)
@@ -241,14 +241,22 @@
 #define XLATE_AS_APPROPRIATE(key, entry) \
        if (maps & key) { \
                if (res->unscaled_data.pic \
-                    && (force || !res->unscaled_data.pic->entry->data)) \
+                    && (force || !res->unscaled_data.pic->entry->data)) { \
+                               if (key == GFX_MASK_VISUAL) \
+                                       gfx_get_res_config(options, 
res->unscaled_data.pic->entry); \
                                gfx_xlate_pixmap(res->unscaled_data.pic->entry, 
mode, filter); \
-               if (scaled && res->scaled_data.pic \
-                    && (force || !res->scaled_data.pic->entry->data)) \
+               } if (scaled && res->scaled_data.pic \
+                    && (force || !res->scaled_data.pic->entry->data)) { \
+                               if (key == GFX_MASK_VISUAL) \
+                                       gfx_get_res_config(options, 
res->scaled_data.pic->entry); \
                                gfx_xlate_pixmap(res->scaled_data.pic->entry, 
mode, filter); \
+                } \
        }
+
 static gfxr_pic_t *
-gfxr_pic_xlate_common(gfx_resource_t *res, int maps, int scaled, int force, 
gfx_mode_t *mode, int filter, int endianize)
+gfxr_pic_xlate_common(gfx_resource_t *res, int maps, int scaled,
+                     int force, gfx_mode_t *mode, int filter, int endianize,
+                     gfx_options_t *options)
 {
        XLATE_AS_APPROPRIATE(GFX_MASK_VISUAL, visual_map);
        XLATE_AS_APPROPRIATE(GFX_MASK_PRIORITY, priority_map);
@@ -291,11 +299,11 @@
                        need_unscaled = 0;
                        pic = gfxr_interpreter_init_pic(state->version,
                                                        &mode_1x1_color_index,
-                                                       (restype << 16) | nr,
+                                                       GFXR_RES_ID(restype, 
nr),
                                                        state->misc_payload);
                } else pic = gfxr_interpreter_init_pic(state->version,
                                                       state->driver->mode,
-                                                      (restype << 16) | nr,
+                                                      GFXR_RES_ID(restype, nr),
                                                       state->misc_payload);
 
                if (!pic) {
@@ -308,7 +316,7 @@
                if (need_unscaled) {
                        unscaled_pic = gfxr_interpreter_init_pic(state->version,
                                                                 
&mode_1x1_color_index,
-                                                                (restype << 
16) | nr,
+                                                                
GFXR_RES_ID(restype, nr),
                                                                 
state->misc_payload);
                        if (!unscaled_pic) {
                                GFXERROR("Failed to allocate unscaled pic!\n");
@@ -332,7 +340,7 @@
 
                if (!res) {
                        res = sci_malloc(sizeof(gfx_resource_t));
-                       res->ID = ((restype << 16) | nr);
+                       res->ID = GFXR_RES_ID(restype, nr);
                        res->lock_sequence_nr = state->options->buffer_pics_nr;
                        sbtree_set(tree, nr, (void *) res);
                } else {
@@ -352,9 +360,10 @@
        /* If the pic was only just drawn, we'll have to antialiase and 
endianness-adjust it now */
 
        npic = gfxr_pic_xlate_common(res, maps,
-                                   scaled || state->options->pic0_unscaled,
-                                   0, state->driver->mode,
-                                   state->options->pic_xlate_filter, 0);
+                                    scaled || state->options->pic0_unscaled,
+                                    0, state->driver->mode,
+                                    state->options->pic_xlate_filter, 0,
+                                    state->options);
 
 
        if (must_post_process_pic) {
@@ -449,7 +458,9 @@
 
        res->mode = MODE_INVALID; /* Invalidate */
 
-       pic = gfxr_pic_xlate_common(res, maps, scaled, 1/*force*/, 
state->driver->mode, state->options->pic_xlate_filter, 1);
+       pic = gfxr_pic_xlate_common(res, maps, scaled, 1/*force*/, 
state->driver->mode,
+                                   state->options->pic_xlate_filter, 1,
+                                   state->options);
 
        if (state->options->pic0_unscaled) /* Scale priority map again, if 
needed */
                res->scaled_data.pic->priority_map = 
gfx_pixmap_scale_index_data(res->scaled_data.pic->priority_map, 
state->driver->mode);
@@ -489,7 +500,7 @@
                if (!res) {
                        res = sci_malloc(sizeof(gfx_resource_t));
                        res->scaled_data.view = NULL;
-                       res->ID = ((restype << 16) | nr);
+                       res->ID = GFXR_RES_ID(restype, nr);
                        res->lock_sequence_nr = state->tag_lock_counter;
                        res->mode = hash;
                        sbtree_set(tree, nr, (void *) res);
@@ -521,6 +532,7 @@
        cel_data = loop_data->cels[*cel];
 
        if (!cel_data->data) {
+               gfx_get_res_config(state->options, cel_data);
                gfx_xlate_pixmap(cel_data, state->driver->mode, 
state->options->view_xlate_filter);
                gfxr_endianness_adjust(cel_data, state->driver->mode);
        }
@@ -563,7 +575,7 @@
                if (!res) {
                        res = sci_malloc(sizeof(gfx_resource_t));
                        res->scaled_data.font = NULL;
-                       res->ID = ((restype << 16) | nr);
+                       res->ID = GFXR_RES_ID(restype, nr);
                        res->lock_sequence_nr = state->tag_lock_counter;
                        res->mode = hash;
                        sbtree_set(tree, nr, (void *) res);
@@ -608,13 +620,14 @@
                if (!res) {
                        res = sci_malloc(sizeof(gfx_resource_t));
                        res->scaled_data.pointer = NULL;
-                       res->ID = ((restype << 16) | nr);
+                       res->ID = GFXR_RES_ID(restype, nr);
                        res->lock_sequence_nr = state->tag_lock_counter;
                        res->mode = hash;
                        sbtree_set(tree, nr, (void *) res);
                } else {
                        gfx_free_pixmap(state->driver, 
res->unscaled_data.pointer);
                }
+               gfx_get_res_config(state->options, cursor);
                gfx_xlate_pixmap(cursor, state->driver->mode, 
state->options->cursor_xlate_filter);
                 gfxr_endianness_adjust(cursor, state->driver->mode);
 

Modified: freesci/trunk/src/gfx/resource/sci_resmgr.c
===================================================================
--- freesci/trunk/src/gfx/resource/sci_resmgr.c 2006-02-01 09:39:40 UTC (rev 
1512)
+++ freesci/trunk/src/gfx/resource/sci_resmgr.c 2006-02-04 19:47:58 UTC (rev 
1513)
@@ -130,7 +130,6 @@
        return GFX_OK;
 }
 
-
 gfxr_view_t *
 gfxr_interpreter_get_view(gfx_resstate_t *state, int nr, void *internal)
 {

Modified: freesci/trunk/src/include/Makefile.am
===================================================================
--- freesci/trunk/src/include/Makefile.am       2006-02-01 09:39:40 UTC (rev 
1512)
+++ freesci/trunk/src/include/Makefile.am       2006-02-04 19:47:58 UTC (rev 
1513)
@@ -9,4 +9,4 @@
        sci_graphics.h sci_widgets.h scitypes.h sbtree.h      \
        gfx_drivers_list.h sciresource.h midiout.h            \
        midi_device.h modules.h sci_memory.h games.h pcmout.h \
-       gfx_sci.h game_select.h
+       gfx_sci.h game_select.h gfx_res_options.h

Modified: freesci/trunk/src/include/gfx_options.h
===================================================================
--- freesci/trunk/src/include/gfx_options.h     2006-02-01 09:39:40 UTC (rev 
1512)
+++ freesci/trunk/src/include/gfx_options.h     2006-02-04 19:47:58 UTC (rev 
1513)
@@ -31,6 +31,7 @@
 
 #include <gfx_resource.h>
 #include <gfx_tools.h>
+#include <gfx_res_options.h>
 
 /* Dirty rectangle heuristics: */
 
@@ -69,6 +70,8 @@
 
        gfxr_antialiasing_t pic0_antialiasing;
 
+       gfx_res_fullconf_t res_conf; /* Resource customisation: Per-resource 
palettes etc. */
+
        int dirty_frames;
 
        int workarounds; /* Workaround flags- see below */

Added: freesci/trunk/src/include/gfx_res_options.h
===================================================================
--- freesci/trunk/src/include/gfx_res_options.h 2006-02-01 09:39:40 UTC (rev 
1512)
+++ freesci/trunk/src/include/gfx_res_options.h 2006-02-04 19:47:58 UTC (rev 
1513)
@@ -0,0 +1,134 @@
+/***************************************************************************
+ gfx_res_options.h  Copyright (C) 2002 Christoph Reichenbach
+
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public Licence as
+ published by the Free Software Foundaton; either version 2 of the
+ Licence, or (at your option) any later version.
+
+ It is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ merchantibility or fitness for a particular purpose. See the
+ GNU General Public Licence for more details.
+
+ You should have received a copy of the GNU General Public Licence
+ along with this program; see the file COPYING. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+
+
+ Please contact the maintainer for any program-related bug reports or
+ inquiries.
+
+ Current Maintainer:
+
+    Christoph Reichenbach (CR) <address@hidden>
+
+***************************************************************************/
+
+/* Configuration options for per-resource customisations */
+
+#ifndef _GFX_RES_OPTIONS_H_
+#define _GFX_RES_OPTIONS_H_
+
+#include <gfx_resource.h>
+#include <gfx_resmgr.h>
+
+#define GFX_RES_PATTERN_MIN 0
+#define GFX_RES_PATTERN_MAX 65535
+
+typedef struct _gfx_res_pattern {
+       int min, max;
+} gfx_res_pattern_t;
+
+typedef struct _gfx_res_pattern_list {
+       gfx_res_pattern_t pattern;
+       struct _gfx_res_pattern_list *next;
+} gfx_res_pattern_list_t;
+
+
+/* GFX resource assignments */
+
+#define GFX_RES_ASSIGN_TYPE_PALETTE 0 /* Assign a palette */
+
+typedef struct {
+       short type; /* GFX_RES_ASSIGN_TYPE_* */
+
+       union {
+               struct {
+                       int colors_nr;
+                       gfx_pixmap_color_t *colors;
+               } palette;
+       } assign;
+} gfx_res_assign_t;
+
+
+/* GFX resource modifications */
+
+#define GFX_RES_MULTIPLY_FIXED 0 /* Linear palette update */
+
+typedef struct {
+       short type; /* GFX_RES_ASSIGN_TYPE_* */
+
+       union {
+               byte factor[3]; /* divide by 16 to retreive factor */
+       } mod;
+} gfx_res_mod_t;
+
+
+typedef struct _gfx_res_conf {
+       int type; /* Resource type-- only one allowed */
+
+       /* If any of the following is 0, it means that there is no restriction.
+       ** Otherwise, one of the patterns associated with them must match. */
+       int patterns_nr; /* Number of patterns (only 'view' patterns for views) 
*/
+       int loops_nr, cels_nr; /* Number of loop/cel patterns, for views only.
+                              ** For pics, loops_nr identifies the palette. */
+
+       gfx_res_pattern_t *patterns;
+
+       union {
+               gfx_res_assign_t assign;
+               gfx_res_mod_t mod;
+       } conf; /* The actual configuration */
+
+       struct _gfx_res_conf *next;
+} gfx_res_conf_t;
+
+
+typedef gfx_res_conf_t *gfx_res_conf_p_t;
+
+typedef struct {
+       gfx_res_conf_p_t assign[GFX_RESOURCE_TYPES_NR];
+       gfx_res_conf_p_t mod[GFX_RESOURCE_TYPES_NR];
+} gfx_res_fullconf_t;
+
+
+struct _gfx_options;
+
+int
+gfx_update_conf(struct _gfx_options *options,
+               char *line);
+/* Updates the configuration
+** Parameters: (gfx_options_t *) options: The options list to update
+**             (char *) line: The text line to parse
+** Modifies  : (gfx_options_t *) options
+** Returns   : (int) 0 on success, 1 if an error occured
+** The line passed to it should begin with the resource type and be
+** terminated by a semicolon.
+*/
+
+int
+gfx_get_res_config(struct _gfx_options *options,
+                  gfx_pixmap_t *pxm);
+/* Configures a graphical pixmap according to config options
+** Parameters: (gfx_options_t *) options: The options according to which
+**                                        configuration should be performed
+**             (gfx_resource_types_t) pxm: The pixmap to configure
+** Returns   : (int) 0 on success, non-zero otherwise
+** Modifies pxm as considered appropriate by configuration options. Does
+** not do anything in colour index mode.
+*/
+
+#endif /* !_GFX_RES_OPTIONS_H_ */

Modified: freesci/trunk/src/include/gfx_resmgr.h
===================================================================
--- freesci/trunk/src/include/gfx_resmgr.h      2006-02-01 09:39:40 UTC (rev 
1512)
+++ freesci/trunk/src/include/gfx_resmgr.h      2006-02-04 19:47:58 UTC (rev 
1513)
@@ -41,7 +41,11 @@
        GFX_RESOURCE_TYPES_NR /* Number of resource types that are to be 
supported */
 } gfx_resource_types_t;
 
+#define GFXR_RES_ID(type, index) ((type) << 16 | (index))
+#define GFXR_RES_TYPE(id) (id >> 16)
+#define GFXR_RES_NR(id) (id & 0xffff)
 
+
 typedef struct gfx_resource_struct {
        int ID; /* Resource ID */
        int lock_sequence_nr; /* See description of lock_counter in 
gfx_resstate_t */





reply via email to

[Prev in Thread] Current Thread [Next in Thread]