hedgewars/uLandTemplates.pas
changeset 358 236bbd12d4d9
parent 351 29bc9c36ad5f
child 359 59fbfc65fbda
equal deleted inserted replaced
357:165a040e4cfa 358:236bbd12d4d9
    20 interface
    20 interface
    21 uses SDLh, uFloat;
    21 uses SDLh, uFloat;
    22 {$INCLUDE options.inc}
    22 {$INCLUDE options.inc}
    23 
    23 
    24 type PPointArray = ^TPointArray;
    24 type PPointArray = ^TPointArray;
    25      TPointArray = array[0..64] of TPoint;
    25      TPointArray = array[0..64] of TSDL_Rect;
    26      TEdgeTemplate = record
    26      TEdgeTemplate = record
    27                      BasePoints: PPointArray;
    27                      BasePoints: PPointArray;
    28                      BasePointsCount: Longword;
    28                      BasePointsCount: Longword;
    29                      BezPassCnt: Longword; 
       
    30                      PassMin, PassDelta: Longword;
       
    31                      WaveAmplMin, WaveAmplDelta: Longword;
       
    32                      WaveFreqMin, WaveFreqDelta: Longword;
       
    33                      FillPoints: PPointArray;
    29                      FillPoints: PPointArray;
    34                      FillPointsCount: Longword;
    30                      FillPointsCount: Longword;
    35                      canMirror, canFlip: boolean;
    31                      canMirror, canFlip: boolean;
    36                      end;
    32                      end;
    37 
    33 
    38 const Template0Points: array[0..4] of TPoint =
    34 const Template0Points: array[0..4] of TSDL_Rect =
    39       (
    35       (
    40        (x:  500; y: 1500),
    36        (x:  400; y: 1100; w: 1; h: 1),
    41        (x:  350; y:  400),
    37        (x:  250; y:  400; w: 200; h: 200),
    42        (x: 1023; y:  820),
    38        (x:  923; y:  620; w: 200; h: 400),
    43        (x: 1700; y:  400),
    39        (x: 1600; y:  400; w: 200; h: 200),
    44        (x: 1550; y: 1500)
    40        (x: 1450; y: 1100; w: 1; h: 1)
    45       );
    41       );
    46       Template0FPoints: array[0..0] of TPoint =
    42       Template0FPoints: array[0..0] of TPoint =
    47       (
    43       (
    48        (x: 1023; y:    0)
    44        (x: 1023; y:    0)
    49       );
    45       );
    50 
    46 
    51 const Template1Points: array[0..12] of TPoint =
    47 const EdgeTemplates: array[0..0] of TEdgeTemplate =
    52       (
       
    53        (x:  300; y: 1500),
       
    54        (x:  300; y: 1000),
       
    55        (x:  250; y:  750),
       
    56        (x:  550; y:  480),
       
    57        (x:  650; y:  780),
       
    58        (x:  810; y:  780),
       
    59        (x:  800; y:  500),
       
    60        (x: 1200; y:  500),
       
    61        (x: 1300; y:  800),
       
    62        (x: 1500; y:  500),
       
    63        (x: 1800; y:  750),
       
    64        (x: 1750; y: 1000),
       
    65        (x: 1750; y: 1500)
       
    66       );
       
    67       Template1FPoints: array[0..0] of TPoint =
       
    68       (
       
    69        (x: 1023; y:    0)
       
    70       );
       
    71 
       
    72 const Template2Points: array[0..28] of TPoint =
       
    73       (
       
    74        (x:  350; y: 1500),
       
    75        (x:  350; y: 1000),
       
    76        (x:  190; y:  850),
       
    77        (x:  500; y:  750),
       
    78        (x:  520; y:  450),
       
    79        (x:  190; y:  600),
       
    80        (x:  210; y:  260),
       
    81        (x:  800; y:  310),
       
    82        (x: 1350; y:  220),
       
    83        (x: 1250; y:  360),
       
    84        (x: 1550; y:  520),
       
    85        (x: 1100; y:  400),
       
    86        (x:  900; y:  470),
       
    87        (x:  650; y:  400),
       
    88        (x:  900; y:  750),
       
    89        (x:  600; y:  750),
       
    90        (x:  600; y:  850),
       
    91        (x: 1100; y:  900),
       
    92        (x: 1200; y: 1000),
       
    93        (x: 1200; y: 1300),
       
    94        (x: 1400; y: 1300),
       
    95        (x: 1400; y: 1000),
       
    96        (x: 1280; y:  850),
       
    97        (x: 1150; y:  630),
       
    98        (x: 1600; y:  850),
       
    99        (x: 1800; y:  600),
       
   100        (x: 1900; y:  600),
       
   101        (x: 1700; y: 1010),
       
   102        (x: 1700; y: 1500)
       
   103       );
       
   104       Template2FPoints: array[0..0] of TPoint =
       
   105       (
       
   106        (x: 1023; y:    0)
       
   107       );
       
   108 
       
   109 const Template3Points: array[0..23] of TPoint =
       
   110       (
       
   111        (x:  200; y: 1500),
       
   112        (x:  200; y: 1000),
       
   113        (x:  390; y:  650),
       
   114        (x:  210; y:  260),
       
   115        (x: 1000; y:  420),
       
   116        (x: 1100; y:  200),
       
   117        (x: 1250; y:  420),
       
   118        (x: 1250; y:  620),
       
   119        (x:  900; y:  610),
       
   120        (x:  650; y:  450),
       
   121        (x:  550; y:  500),
       
   122        (x:  650; y:  700),
       
   123        (x: 1200; y:  800),
       
   124        (x: 1200; y: 1000),
       
   125        (x: 1200; y: 1200),
       
   126        (x: 1400; y: 1200),
       
   127        (x: 1400; y: 1000),
       
   128        (x: 1280; y:  750),
       
   129        (x: 1500; y:  600),
       
   130        (x: 1400; y:  200),
       
   131        (x: 1800; y:  200),
       
   132        (x: 1700; y:  600),
       
   133        (x: 1900; y: 1010),
       
   134        (x: 1800; y: 1500)
       
   135       );
       
   136       Template3FPoints: array[0..0] of TPoint =
       
   137       (
       
   138        (x: 1023; y:    0)
       
   139       );
       
   140 
       
   141 const Template4Points: array[0..38] of TPoint =
       
   142       (
       
   143        (x:  200; y: 1500),
       
   144        (x:  200; y: 1000),
       
   145        (x:  210; y:  800),
       
   146        (x:  480; y:  830),
       
   147        (x:  460; y:  700),
       
   148        (x:  150; y:  610),
       
   149        (x:  150; y:  310),
       
   150        (x:  220; y:  200),
       
   151        (x:  340; y:  195),
       
   152        (x:  410; y:  415),
       
   153        (x:  420; y:  495),
       
   154        (x:  535; y:  615),
       
   155        (x:  705; y:  600),
       
   156        (x:  760; y:  425),
       
   157        (x:  815; y:  230),
       
   158        (x:  970; y:  200),
       
   159        (x: 1050; y:  360),
       
   160        (x:  850; y:  590),
       
   161        (x: 1070; y:  790),
       
   162        (x: 1000; y: 1000),
       
   163        (x: 1000; y: 1500),
       
   164        (x: 1250; y: 1500),
       
   165        (x: 1250; y: 1000),
       
   166        (x: 1260; y:  830),
       
   167        (x: 1290; y:  700),
       
   168        (x: 1270; y:  450),
       
   169        (x: 1180; y:  280),
       
   170        (x: 1210; y:  160),
       
   171        (x: 1370; y:  160),
       
   172        (x: 1505; y:  205),
       
   173        (x: 1630; y:  315),
       
   174        (x: 1660; y:  450),
       
   175        (x: 1580; y:  620),
       
   176        (x: 1670; y:  725),
       
   177        (x: 1800; y:  730),
       
   178        (x: 1860; y:  680),
       
   179        (x: 1925; y:  810),
       
   180        (x: 1800; y: 1000),
       
   181        (x: 1800; y: 1500)
       
   182       );
       
   183       Template4FPoints: array[0..0] of TPoint =
       
   184       (
       
   185        (x: 1023; y:    0)
       
   186       );
       
   187     
       
   188 const Template5Points: array[0..10] of TPoint =
       
   189       (
       
   190        (x:  225; y: 1500),
       
   191        (x:  254; y:  226),
       
   192        (x:  729; y:  238),
       
   193        (x:  658; y:  441),
       
   194        (x:  661; y:  651),
       
   195        (x: 1023; y:  759),
       
   196        (x: 1374; y:  648),
       
   197        (x: 1473; y:  285),
       
   198        (x: 1803; y:  207),
       
   199        (x: 1839; y:  801),
       
   200        (x: 1674; y: 1500)
       
   201       );
       
   202       Template5FPoints: array[0..0] of TPoint =
       
   203       (
       
   204        (x: 1023; y:    0)
       
   205       );
       
   206 
       
   207 const Template6Points: array[0..20] of TPoint =
       
   208       (
       
   209        (x:  318; y: 1500),
       
   210        (x:  270; y: 1023),
       
   211        (x:  252; y:  921),
       
   212        (x:  480; y:  888),
       
   213        (x:  492; y:  753),
       
   214        (x:  654; y:  756),
       
   215        (x:  687; y:  630),
       
   216        (x:  906; y:  627),
       
   217        (x:  987; y:  813),
       
   218        (x: 1125; y:  825),
       
   219        (x: 1134; y:  645),
       
   220        (x: 1236; y:  558),
       
   221        (x: 1260; y:  438),
       
   222        (x: 1467; y:  462),
       
   223        (x: 1536; y:  348),
       
   224        (x: 1680; y:  402),
       
   225        (x: 1713; y:  594),
       
   226        (x: 1593; y:  693),
       
   227        (x: 1707; y:  774),
       
   228        (x: 1728; y:  894),
       
   229        (x: 1788; y: 1500)
       
   230       );
       
   231       Template6FPoints: array[0..0] of TPoint =
       
   232       (
       
   233        (x: 1023; y:    0)
       
   234       );
       
   235 
       
   236 const Template7Points: array[0..43] of TPoint =
       
   237       (
       
   238        (x:  180; y: 1500),
       
   239        (x:  411; y: 1020),
       
   240        (x:  402; y:  912),
       
   241        (x:  141; y:  897),
       
   242        (x:  156; y:  729),
       
   243        (x:  417; y:  813),
       
   244        (x:  432; y:  585),
       
   245        (x:  147; y:  570),
       
   246        (x:  138; y:  435),
       
   247        (x:  444; y:  417),
       
   248        (x:  447; y:  207),
       
   249        (x:  573; y:  261),
       
   250        (x:  663; y:  201),
       
   251        (x:  711; y:  375),
       
   252        (x:  897; y:  411),
       
   253        (x:  936; y:  498),
       
   254        (x:  663; y:  558),
       
   255        (x:  669; y:  762),
       
   256        (x:  957; y:  723),
       
   257        (x:  984; y:  864),
       
   258        (x:  729; y:  879),
       
   259        (x:  879; y: 1020),
       
   260        (x:  981; y: 1449),
       
   261        (x: 1242; y: 1449),
       
   262        (x: 1476; y: 1020),
       
   263        (x: 1470; y:  900),
       
   264        (x: 1284; y:  897),
       
   265        (x: 1218; y:  774),
       
   266        (x: 1464; y:  765),
       
   267        (x: 1464; y:  672),
       
   268        (x: 1119; y:  630),
       
   269        (x: 1116; y:  537),
       
   270        (x: 1485; y:  501),
       
   271        (x: 1167; y:  246),
       
   272        (x: 1263; y:  180),
       
   273        (x: 1572; y:  312),
       
   274        (x: 1767; y:  162),
       
   275        (x: 1827; y:  306),
       
   276        (x: 1647; y:  465),
       
   277        (x: 1875; y:  621),
       
   278        (x: 1683; y:  747),
       
   279        (x: 1665; y:  831),
       
   280        (x: 1818; y:  951),
       
   281        (x: 1893; y: 1500)
       
   282       );
       
   283       Template7FPoints: array[0..0] of TPoint =
       
   284       (
       
   285        (x: 1023; y:    0)
       
   286       );
       
   287 
       
   288 const Template8Points: array[0..23] of TPoint =
       
   289       (
       
   290        (x:  222; y: 1500),
       
   291        (x:  354; y: 1023),
       
   292        (x:  249; y:  783),
       
   293        (x:  240; y:  421),
       
   294        (x:  411; y:  401),
       
   295        (x:  432; y:  777),
       
   296        (x:  573; y:  777),
       
   297        (x:  567; y:  300),
       
   298        (x:  696; y:  250),
       
   299        (x:  744; y:  683),
       
   300        (x:  897; y:  698),
       
   301        (x:  885; y:  450),
       
   302        (x: 1032; y:  479),
       
   303        (x: 1065; y:  698),
       
   304        (x: 1200; y:  690),
       
   305        (x: 1200; y:  218),
       
   306        (x: 1326; y:  252),
       
   307        (x: 1359; y:  786),
       
   308        (x: 1470; y:  810),
       
   309        (x: 1485; y:  379),
       
   310        (x: 1608; y:  342),
       
   311        (x: 1641; y:  819),
       
   312        (x: 1719; y:  864),
       
   313        (x: 1746; y: 1500)
       
   314       );
       
   315       Template8FPoints: array[0..0] of TPoint =
       
   316       (
       
   317        (x: 1023; y:    0)
       
   318       );
       
   319 
       
   320 const Template9Points: array[0..23] of TPoint =
       
   321       (
       
   322        (x:  384; y: 1500),
       
   323        (x:  210; y: 1023),
       
   324        (x:  213; y:  891),
       
   325        (x:  501; y:  861),
       
   326        (x:  228; y:  657),
       
   327        (x:  558; y:  676),
       
   328        (x:  561; y:  513),
       
   329        (x:  246; y:  354),
       
   330        (x:  609; y:  393),
       
   331        (x:  876; y:  309),
       
   332        (x:  759; y:  576),
       
   333        (x:  759; y:  762),
       
   334        (x: 1113; y:  750),
       
   335        (x: 1128; y:  873),
       
   336        (x: 1488; y:  870),
       
   337        (x: 1473; y:  678),
       
   338        (x: 1182; y:  501),
       
   339        (x: 1515; y:  507),
       
   340        (x: 1776; y:  393),
       
   341        (x: 1668; y:  630),
       
   342        (x: 1833; y:  714),
       
   343        (x: 1674; y:  837),
       
   344        (x: 1800; y: 1020),
       
   345        (x: 1632; y: 1500)
       
   346       );
       
   347       Template9FPoints: array[0..0] of TPoint =
       
   348       (
       
   349        (x: 1023; y:    0)
       
   350       );
       
   351 
       
   352 const Template10Points: array[0..13] of TPoint =
       
   353       (
       
   354        (x:  336; y: 1500),
       
   355        (x:  303; y: 1026),
       
   356        (x:  225; y:  921),
       
   357        (x:  216; y:  741),
       
   358        (x:  774; y:  810),
       
   359        (x:  687; y:  336),
       
   360        (x:  975; y:  192),
       
   361        (x: 1350; y:  324),
       
   362        (x: 1230; y:  681),
       
   363        (x: 1257; y:  855),
       
   364        (x: 1623; y:  846),
       
   365        (x: 1821; y:  657),
       
   366        (x: 1911; y:  897),
       
   367        (x: 1704; y: 1500)
       
   368       );
       
   369       Template10FPoints: array[0..0] of TPoint =
       
   370       (
       
   371        (x: 1023; y:    0)
       
   372       );
       
   373 
       
   374 const Template11Points: array[0..9] of TPoint =
       
   375       (
       
   376        (x:  270; y: 1500),
       
   377        (x:  180; y:  795),
       
   378        (x:  453; y:  753),
       
   379        (x:  537; y:  900),
       
   380        (x:  822; y:  729),
       
   381        (x: 1128; y:  882),
       
   382        (x: 1269; y:  657),
       
   383        (x: 1560; y:  915),
       
   384        (x: 1812; y:  867),
       
   385        (x: 1854; y: 1500)
       
   386       );
       
   387       Template11FPoints: array[0..0] of TPoint =
       
   388       (
       
   389        (x: 1023; y:    0)
       
   390       );
       
   391 
       
   392 const Template12Points: array[0..38] of TPoint =
       
   393       (
       
   394        (x:  201; y: 1500),
       
   395        (x:  207; y:  920),
       
   396        (x:  360; y:  901),
       
   397        (x:  345; y:  822),
       
   398        (x:  183; y:  810),
       
   399        (x:  183; y:  632),
       
   400        (x:  327; y:  628),
       
   401        (x:  165; y:  402),
       
   402        (x:  462; y:  443),
       
   403        (x:  555; y:  272),
       
   404        (x:  525; y:  556),
       
   405        (x:  618; y:  647),
       
   406        (x:  483; y:  712),
       
   407        (x:  468; y:  860),
       
   408        (x:  810; y:  884),
       
   409        (x:  879; y:  796),
       
   410        (x:  756; y:  764),
       
   411        (x:  771; y:  620),
       
   412        (x:  960; y:  625),
       
   413        (x:  969; y:  517),
       
   414        (x:  771; y:  503),
       
   415        (x:  768; y:  395),
       
   416        (x: 1092; y:  412),
       
   417        (x: 1125; y:  616),
       
   418        (x: 1029; y:  767),
       
   419        (x: 1404; y:  858),
       
   420        (x: 1440; y:  714),
       
   421        (x: 1293; y:  688),
       
   422        (x: 1344; y:  320),
       
   423        (x: 1548; y:  342),
       
   424        (x: 1494; y:  563),
       
   425        (x: 1614; y:  570),
       
   426        (x: 1710; y:  383),
       
   427        (x: 1860; y:  448),
       
   428        (x: 1683; y:  664),
       
   429        (x: 1773; y:  726),
       
   430        (x: 1578; y:  836),
       
   431        (x: 1746; y:  918),
       
   432        (x: 1662; y: 1500)
       
   433       );
       
   434       Template12FPoints: array[0..0] of TPoint =
       
   435       (
       
   436        (x: 1023; y:    0)
       
   437       );
       
   438 
       
   439 const Template13Points: array[0..13] of TPoint =
       
   440       (
       
   441        (x:  645; y: 1500),
       
   442        (x:  198; y:  732),
       
   443        (x:  402; y:  648),
       
   444        (x:  609; y:  763),
       
   445        (x:  750; y:  590),
       
   446        (x:  303; y:  376),
       
   447        (x: 1023; y:  441),
       
   448        (x: 1023; y:  316),
       
   449        (x: 1719; y:  329),
       
   450        (x: 1695; y:  457),
       
   451        (x: 1038; y:  576),
       
   452        (x: 1017; y:  756),
       
   453        (x: 1803; y:  728),
       
   454        (x: 1503; y: 1500)
       
   455       );
       
   456       Template13FPoints: array[0..0] of TPoint =
       
   457       (
       
   458        (x: 1023; y:    0)
       
   459       );
       
   460 
       
   461 const Template14Points: array[0..22] of TPoint =
       
   462       (
       
   463        (x:  177; y: 1500),
       
   464        (x:  262; y: 1026),
       
   465        (x:  259; y:  303),
       
   466        (x:  765; y:  162),
       
   467        (x:  789; y:  357),
       
   468        (x:  517; y:  420),
       
   469        (x:  658; y:  690),
       
   470        (x:  448; y:  762),
       
   471        (x:  663; y: 1029),
       
   472        (x:  765; y: 1440),
       
   473        (x: 1446; y: 1431),
       
   474        (x: 1439; y: 1026),
       
   475        (x: 1416; y:  825),
       
   476        (x: 1253; y:  840),
       
   477        (x: 1253; y:  600),
       
   478        (x: 1551; y:  573),
       
   479        (x: 1506; y:  390),
       
   480        (x: 1065; y:  366),
       
   481        (x: 1077; y:  171),
       
   482        (x: 1656; y:  156),
       
   483        (x: 1821; y:  396),
       
   484        (x: 1716; y:  768),
       
   485        (x: 1926; y: 1500)
       
   486       );
       
   487       Template14FPoints: array[0..0] of TPoint =
       
   488       (
       
   489        (x: 1023; y:    0)
       
   490       );
       
   491 
       
   492 const EdgeTemplates: array[0..14] of TEdgeTemplate =
       
   493       (
    48       (
   494        (BasePoints: @Template0Points;
    49        (BasePoints: @Template0Points;
   495         BasePointsCount: Succ(High(Template0Points));
    50         BasePointsCount: Succ(High(Template0Points));
   496         BezPassCnt: 4;
       
   497         PassMin: 10; PassDelta: 5;
       
   498         WaveAmplMin:    17; WaveAmplDelta: 20;
       
   499         WaveFreqMin: 0100; WaveFreqDelta: 0020;
       
   500         FillPoints: @Template0FPoints;
    51         FillPoints: @Template0FPoints;
   501         FillPointsCount: Succ(High(Template0FPoints));
    52         FillPointsCount: Succ(High(Template0FPoints));
   502         canMirror: false; canFlip: false;
    53         canMirror: false; canFlip: false;
   503        ),
    54        )
   504        (BasePoints: @Template1Points;
       
   505         BasePointsCount: Succ(High(Template1Points));
       
   506         BezPassCnt: 3;
       
   507         PassMin: 10; PassDelta: 2;
       
   508         WaveAmplMin:    25; WaveAmplDelta: 15;
       
   509         WaveFreqMin:  0080; WaveFreqDelta: 0020;
       
   510         FillPoints: @Template1FPoints;
       
   511         FillPointsCount: Succ(High(Template1FPoints));
       
   512         canMirror: false; canFlip: false;
       
   513        ),
       
   514        (BasePoints: @Template2Points;
       
   515         BasePointsCount: Succ(High(Template2Points));
       
   516         BezPassCnt: 3;
       
   517         PassMin: 14; PassDelta: 3;
       
   518         WaveAmplMin:    10; WaveAmplDelta: 10;
       
   519         WaveFreqMin:  0100; WaveFreqDelta: 0020;
       
   520         FillPoints: @Template2FPoints;
       
   521         FillPointsCount: Succ(High(Template2FPoints));
       
   522         canMirror: true; canFlip: false;
       
   523        ),
       
   524        (BasePoints: @Template3Points;
       
   525         BasePointsCount: Succ(High(Template3Points));
       
   526         BezPassCnt: 4;
       
   527         PassMin: 15; PassDelta: 2;
       
   528         WaveAmplMin:    8; WaveAmplDelta: 12;
       
   529         WaveFreqMin: 0150; WaveFreqDelta: 0015;
       
   530         FillPoints: @Template3FPoints;
       
   531         FillPointsCount: Succ(High(Template3FPoints));
       
   532         canMirror: true; canFlip: false;
       
   533        ),
       
   534        (BasePoints: @Template4Points;
       
   535         BasePointsCount: Succ(High(Template4Points));
       
   536         BezPassCnt: 3;
       
   537         PassMin: 19; PassDelta: 5;
       
   538         WaveAmplMin:    12; WaveAmplDelta: 14;
       
   539         WaveFreqMin:  0080; WaveFreqDelta: 0010;
       
   540         FillPoints: @Template4FPoints;
       
   541         FillPointsCount: Succ(High(Template4FPoints));
       
   542         canMirror: true; canFlip: false;
       
   543        ),
       
   544        (BasePoints: @Template5Points;
       
   545         BasePointsCount: Succ(High(Template5Points));
       
   546         BezPassCnt: 4;
       
   547         PassMin: 15; PassDelta: 1;
       
   548         WaveAmplMin:    15; WaveAmplDelta: 14;
       
   549         WaveFreqMin:  0080; WaveFreqDelta: 0020;
       
   550         FillPoints: @Template5FPoints;
       
   551         FillPointsCount: Succ(High(Template5FPoints));
       
   552         canMirror: true; canFlip: false;
       
   553        ),
       
   554       (BasePoints: @Template6Points;
       
   555        BasePointsCount: Succ(High(Template6Points));
       
   556        BezPassCnt: 3;
       
   557        PassMin: 15; PassDelta: 1;
       
   558        WaveAmplMin:    15; WaveAmplDelta: 10;
       
   559        WaveFreqMin:  0100; WaveFreqDelta: 0015;
       
   560        FillPoints: @Template6FPoints;
       
   561        FillPointsCount: Succ(High(Template6FPoints));
       
   562        canMirror: true; canFlip: false;
       
   563       ),
       
   564       (BasePoints: @Template7Points;
       
   565        BasePointsCount: Succ(High(Template7Points));
       
   566        BezPassCnt: 3;
       
   567        PassMin: 12; PassDelta: 4;
       
   568        WaveAmplMin:     5; WaveAmplDelta: 15;
       
   569        WaveFreqMin:  0150; WaveFreqDelta: 0020;
       
   570        FillPoints: @Template7FPoints;
       
   571        FillPointsCount: Succ(High(Template7FPoints));
       
   572        canMirror: true; canFlip: false;
       
   573       ),
       
   574       (BasePoints: @Template8Points;
       
   575        BasePointsCount: Succ(High(Template8Points));
       
   576        BezPassCnt: 4;
       
   577        PassMin:  9; PassDelta: 3;
       
   578        WaveAmplMin:    18; WaveAmplDelta: 18;
       
   579        WaveFreqMin:  0100; WaveFreqDelta: 0020;
       
   580        FillPoints: @Template8FPoints;
       
   581        FillPointsCount: Succ(High(Template8FPoints));
       
   582        canMirror: true; canFlip: false;
       
   583       ),
       
   584       (BasePoints: @Template9Points;
       
   585        BasePointsCount: Succ(High(Template9Points));
       
   586        BezPassCnt: 4;
       
   587        PassMin: 17; PassDelta: 3;
       
   588        WaveAmplMin:    10; WaveAmplDelta: 10;
       
   589        WaveFreqMin:  0100; WaveFreqDelta: 0020;
       
   590        FillPoints: @Template9FPoints;
       
   591        FillPointsCount: Succ(High(Template9FPoints));
       
   592        canMirror: true; canFlip: false;
       
   593       ),
       
   594       (BasePoints: @Template10Points;
       
   595        BasePointsCount: Succ(High(Template10Points));
       
   596        BezPassCnt: 4;
       
   597        PassMin: 15; PassDelta: 2;
       
   598        WaveAmplMin:    15; WaveAmplDelta: 10;
       
   599        WaveFreqMin:  0080; WaveFreqDelta: 0020;
       
   600        FillPoints: @Template10FPoints;
       
   601        FillPointsCount: Succ(High(Template10FPoints));
       
   602        canMirror: false; canFlip: false;
       
   603       ),
       
   604       (BasePoints: @Template11Points;
       
   605        BasePointsCount: Succ(High(Template11Points));
       
   606        BezPassCnt: 4;
       
   607        PassMin: 15; PassDelta: 1;
       
   608        WaveAmplMin:    10; WaveAmplDelta: 10;
       
   609        WaveFreqMin:  0080; WaveFreqDelta: 0020;
       
   610        FillPoints: @Template11FPoints;
       
   611        FillPointsCount: Succ(High(Template11FPoints));
       
   612        canMirror: true; canFlip: false;
       
   613       ),
       
   614       (BasePoints: @Template12Points;
       
   615        BasePointsCount: Succ(High(Template12Points));
       
   616        BezPassCnt: 3;
       
   617        PassMin: 10; PassDelta: 1;
       
   618        WaveAmplMin:    15; WaveAmplDelta: 15;
       
   619        WaveFreqMin:  0050; WaveFreqDelta: 0030;
       
   620        FillPoints: @Template12FPoints;
       
   621        FillPointsCount: Succ(High(Template12FPoints));
       
   622        canMirror: true; canFlip: false;
       
   623       ),
       
   624       (BasePoints: @Template13Points;
       
   625        BasePointsCount: Succ(High(Template13Points));
       
   626        BezPassCnt: 5;
       
   627        PassMin: 15; PassDelta: 3;
       
   628        WaveAmplMin:    18; WaveAmplDelta: 15;
       
   629        WaveFreqMin:  0028; WaveFreqDelta: 0020;
       
   630        FillPoints: @Template13FPoints;
       
   631        FillPointsCount: Succ(High(Template13FPoints));
       
   632        canMirror: true; canFlip: false;
       
   633       ),
       
   634       (BasePoints: @Template14Points;
       
   635        BasePointsCount: Succ(High(Template14Points));
       
   636        BezPassCnt: 4;
       
   637        PassMin: 14; PassDelta: 3;
       
   638        WaveAmplMin:    20; WaveAmplDelta: 15;
       
   639        WaveFreqMin:  0030; WaveFreqDelta: 0020;
       
   640        FillPoints: @Template14FPoints;
       
   641        FillPointsCount: Succ(High(Template14FPoints));
       
   642        canMirror: true; canFlip: false;
       
   643       )
       
   644       );
    55       );
   645 
    56 
   646 
    57 
   647 
    58 
   648 implementation
    59 implementation