home *** CD-ROM | disk | FTP | other *** search
/ Revista CD Expert 51 / PCGamer51_17Demos.iso / games / CM / CyclingManagerDemoCangas.exe / CyclingManagerDemo / scripts / common / libraries / library_objects.cnc < prev    next >
Text File  |  2001-06-01  |  21KB  |  901 lines

  1. // **************************
  2. // Common object for menu
  3. // **************************
  4.  
  5. func void LibObject_Cadre_UpdateSize(i32x _iW, i32x _iH)
  6. {
  7.     var i32x w1, w2;
  8.     var i32x h1, h2;
  9.     var i32x iTemp;
  10.  
  11.     w1 = GetComponentWidth(0);
  12.     w2 = GetComponentWidth(2);
  13.  
  14.     h1 = GetComponentHeight(0);
  15.     h2 = GetComponentHeight(5);
  16. /*
  17.     print("w1:");print(itoa(w1));print("\n");
  18.     print("w2:");print(itoa(w2));print("\n");
  19.     print("h1:");print(itoa(h1));print("\n");
  20.     print("h2:");print(itoa(h2));print("\n");
  21.     print("width:");print(itoa(_iW-w1-w2));print("\n");
  22.     print("posx:");print(itoa(_iW-w2));print("\n");
  23.     print("height:");print(itoa(_iH-h1-h2));print("\n");
  24.     print("posy:");print(itoa(_iH-h2));print("\n");
  25. */
  26.     SetComponentPosition(1,w1,0);
  27.     iTemp=_iW-w1-w2;
  28.     if(iTemp<0) iTemp=0;
  29.     SetContainerSize(1,iTemp,h1);
  30.     ResizeComponent(1);
  31.  
  32.     SetComponentPosition(2,_iW-w2,0);
  33.  
  34.     SetComponentPosition(3,0,h1);
  35.     
  36.     iTemp=_iH-h1-h2;
  37.     if(iTemp<0) iTemp=0;
  38.     SetContainerSize(3,w1,iTemp);
  39.     ResizeComponent(3);
  40.  
  41.     SetComponentPosition(4,_iW-w2,h1);
  42.     iTemp=_iH-h1-h2;
  43.     if(iTemp<0) iTemp=0;
  44.     SetContainerSize(4,w2,iTemp);
  45.     ResizeComponent(4);
  46.  
  47.     SetComponentPosition(5,0,_iH-h2);
  48.  
  49.     SetComponentPosition(6,w1,_iH-h2);
  50.     iTemp=_iW-w1-w2;
  51.     if(iTemp<0) iTemp=0;
  52.     SetContainerSize(6,iTemp,h2);
  53.     ResizeComponent(6);
  54.  
  55.     SetComponentPosition(7,_iW-w2,_iH-h2);
  56. }
  57.  
  58.  
  59. func void LibObject_Cadre_Create ()
  60. {
  61.     var i32x i,tex;
  62.     //Components Init
  63.     SetComponentNumber(8);
  64.     SetObjectMembersNumber(3);
  65.  
  66.     // Save size to members
  67.     Seti32x(0,oLibCadre.m_iW);
  68.     Seti32x(1,oLibCadre.m_iH);
  69.     Seti32x(2,0);
  70.  
  71.     tex = oLibCadre.m_tTexture;
  72.  
  73.     i = InitContainer(tex);
  74.     ResizeComponent(i);
  75.  
  76.     i = InitContainer(tex);
  77.     SetContainerSprite(i,1,0);
  78.     ResizeComponent(i);
  79.  
  80.     i = InitContainer(tex);
  81.     SetContainerSprite(i,2,0);
  82.     ResizeComponent(i);
  83.  
  84.     i = InitContainer(tex);
  85.     SetContainerSprite(i,3,0);
  86.     ResizeComponent(i);
  87.     
  88.     i = InitContainer(tex);
  89.     SetContainerSprite(i,5,0);
  90.     ResizeComponent(i);
  91.  
  92.     i = InitContainer(tex);
  93.     SetContainerSprite(i,6,0);
  94.     ResizeComponent(i);
  95.  
  96.     i = InitContainer(tex);
  97.     SetContainerSprite(i,7,0);
  98.     ResizeComponent(i);
  99.     
  100.     i = InitContainer(tex);
  101.     SetContainerSprite(i,8,0);
  102.     ResizeComponent(i);
  103.  
  104.     LibObject_Cadre_UpdateSize(oLibCadre.m_iW, oLibCadre.m_iH);
  105.  
  106. /*    i=0;
  107.     while(i<8)
  108.     {
  109.         SetStackEvents(i,GUI_NoEvent);
  110.         i=i+1;
  111.     }*/
  112.  
  113.     AutoResize();
  114. }
  115.  
  116.  
  117.  
  118.  
  119. func void LibObject_CadreFilled_UpdateSize(i32x _iW, i32x _iH)
  120. {
  121.     var i32x w1, w2;
  122.     var i32x h1, h2;
  123.     
  124.     var i32x iTemp,iTemp2;
  125.  
  126.     w1 = GetComponentWidth(0);
  127.     w2 = GetComponentWidth(2);
  128.  
  129.     h1 = GetComponentHeight(0);
  130.     h2 = GetComponentHeight(6);    
  131. /*    
  132.     print("w1:");print(itoa(w1));print("\n");
  133.     print("w2:");print(itoa(w2));print("\n");
  134.     print("h1:");print(itoa(h1));print("\n");
  135.     print("h2:");print(itoa(h2));print("\n");
  136.     print("width:");print(itoa(_iW-w1-w2));print("\n");
  137.     print("posx:");print(itoa(_iW-w2));print("\n");
  138.     print("height:");print(itoa(_iH-h1-h2));print("\n");
  139.     print("posy:");print(itoa(_iH-h2));print("\n");
  140. */
  141.     SetComponentPosition(1,w1,0);
  142.     iTemp=_iW-w1-w2;
  143.     if(iTemp<0) iTemp=0;
  144.     SetContainerSize(1,iTemp,h1);
  145.     ResizeComponent(1);
  146.     
  147.     SetComponentPosition(2,_iW-w2,0);
  148.     
  149.     SetComponentPosition(3,0,h1);
  150.     iTemp=_iH-h1-h2;
  151.     if(iTemp<0) iTemp=0;
  152.     SetContainerSize(3,w1,iTemp);
  153.     ResizeComponent(3);
  154.  
  155.     SetComponentPosition(4,w1,h1);
  156.     iTemp=_iW-w1-w2;
  157.     if(iTemp<0) iTemp=0;
  158.     iTemp2=_iH-h1-h2;
  159.     if(iTemp2<0) iTemp2=0;
  160.     SetContainerSize(4,iTemp,iTemp2);
  161.     ResizeComponent(4);
  162.  
  163.     SetComponentPosition(5,_iW-w2,h1);
  164.     iTemp=_iH-h1-h2;
  165.     if(iTemp<0) iTemp=0;
  166.     SetContainerSize(5,w2,iTemp);
  167.     ResizeComponent(5);
  168.  
  169.     SetComponentPosition(6,0,_iH-h2);
  170.     
  171.     SetComponentPosition(7,w1,_iH-h2);
  172.     iTemp=_iW-w1-w2;
  173.     if(iTemp<0) iTemp=0;
  174.     SetContainerSize(7,iTemp,h2);
  175.     ResizeComponent(7);
  176.  
  177.     SetComponentPosition(8,_iW-w2,_iH-h2);
  178.  
  179.     // clip that shit !
  180.     if((w1+w2>_iW)||(h1+h2>_iH))
  181.     {
  182.         var i32x iX,iY;
  183.         iX=w1-(w1+w2-_iW)/2;
  184.         iY=h1-(h1+h2-_iH)/2;
  185.         
  186.         ActiveContainerClipper(0);
  187.         SetComponentClipper(0,0,0,iX,iY);
  188.         
  189.         ActiveContainerClipper(2);
  190.         SetComponentClipper(2,iX,0,_iW,iY);
  191.         SetComponentPosition(2,iX,0);
  192.         
  193.         ActiveContainerClipper(6);
  194.         SetComponentClipper(6,0,iY,iX,_iH);
  195.         SetComponentPosition(6,0,iY);
  196.         
  197.         ActiveContainerClipper(8);
  198.         SetComponentClipper(8,iX,iY,_iW,_iH);
  199.         SetComponentPosition(8,iX,iY);
  200.     }
  201.     else
  202.     {
  203.         RazContainerClipper(0);
  204.         RazContainerClipper(2);
  205.         RazContainerClipper(6);
  206.         RazContainerClipper(8);
  207.     }
  208.     
  209.     AutoResize();
  210. }
  211.  
  212. func void LibObject_CadreFilled_Create ()
  213. {
  214.     var i32x i,tex;
  215.     //Components Init
  216.     SetComponentNumber(9);
  217.     SetObjectMembersNumber(3);
  218.  
  219.     // Save size to members
  220.     Seti32x(0,oLibCadre.m_iW);
  221.     Seti32x(1,oLibCadre.m_iH);
  222.     Seti32x(2,1);
  223.  
  224.     tex = oLibCadre.m_tTexture;
  225.  
  226.     i = InitContainer(tex);
  227.     ResizeComponent(i);
  228.  
  229.     i = InitContainer(tex);
  230.     SetContainerSprite(i,1,0);
  231.     ResizeComponent(i);
  232.  
  233.     i = InitContainer(tex);
  234.     SetContainerSprite(i,2,0);
  235.     ResizeComponent(i);
  236.  
  237.     i = InitContainer(tex);
  238.     SetContainerSprite(i,3,0);
  239.     ResizeComponent(i);
  240.  
  241.     // Fill region
  242.     i = InitContainer(tex);
  243.     SetContainerSprite(i,4,0);
  244.     ResizeComponent(i);
  245.  
  246.     i = InitContainer(tex);
  247.     SetContainerSprite(i,5,0);
  248.     ResizeComponent(i);
  249.  
  250.     i = InitContainer(tex);
  251.     SetContainerSprite(i,6,0);
  252.     ResizeComponent(i);
  253.     
  254.     i = InitContainer(tex);
  255.     SetContainerSprite(i,7,0);
  256.     ResizeComponent(i);
  257.     
  258.     i = InitContainer(tex);
  259.     SetContainerSprite(i,8,0);
  260.     ResizeComponent(i);
  261.  
  262.     i=0;
  263.     while(i<9)
  264.     {
  265.         SetEvents(i,GUI_NoEvent);
  266.         i=i+1;
  267.     }
  268.  
  269.     LibObject_CadreFilled_UpdateSize(oLibCadre.m_iW, oLibCadre.m_iH);
  270.  
  271.     AutoResize();
  272. }
  273.  
  274. func i32x LibObject_Cadre_Event (i32x _iComponentID, i32x _iEvent)
  275. {
  276.     PushEvent(_iEvent);
  277.     
  278.     // No event are managed by cadre
  279.     return 1;
  280. }
  281.  
  282. func void SetCadreColor(i32x _iCadreID,i32x _iColor)
  283. {
  284.     var component cadre,old;
  285.     var i32x i;
  286.  
  287.     cadre = GetObject(_iCadreID);
  288.  
  289.     old = GetParserComponent();
  290.  
  291.     SetParserComponent(cadre);
  292.  
  293.     var i32x iNbContainers;
  294.     var i32x iTest;
  295.     iTest = Geti32x(2);
  296.  
  297.     if (iTest==0) iNbContainers=8;
  298.     else if (iTest==1) iNbContainers=9;
  299.  
  300.     i=0;
  301.     while(i<iNbContainers)
  302.     {
  303.         SetContainerColor(i,_iColor);
  304.         i=i+1;
  305.     }
  306.  
  307.     SetParserComponent(old);
  308. }
  309.  
  310. func i32x Init_LibObject_Cadre(i32x _texture,i32x _w,i32x _h)
  311. {
  312.     var i32x id;
  313.  
  314.     oLibCadre.m_tTexture = _texture;
  315.     oLibCadre.m_iW = _w;
  316.     oLibCadre.m_iH = _h;
  317.     
  318.     id = InitObject("Cadre", LibObject_Cadre_Create, LibObject_Cadre_Event);
  319.  
  320.     return id;
  321. }
  322.  
  323. func i32x Init_LibObject_FilledCadre(i32x _texture,i32x _w,i32x _h)
  324. {
  325.     var i32x id;
  326.  
  327.     oLibCadre.m_tTexture = _texture;
  328.     oLibCadre.m_iW = _w;
  329.     oLibCadre.m_iH = _h;
  330.     
  331.     id = InitObject("FilledCadre", LibObject_CadreFilled_Create, LibObject_Cadre_Event);
  332.     SetStackEvents(id,GUI_NoEvent);
  333.  
  334.     return id;
  335. }
  336.  
  337. func void SetCadreSize(i32x _iComponentIndex, i32x _iWidth, i32x _iHeight)
  338. {
  339.     var component cadre,old;
  340.     var i32x i;
  341.  
  342.     cadre = GetObject(_iComponentIndex);
  343.     old = GetParserComponent();
  344.  
  345.     SetParserComponent(cadre);
  346.     
  347.     var i32x iTest;
  348.     iTest = Geti32x(2);
  349.  
  350.     if (iTest==0) LibObject_Cadre_UpdateSize(_iWidth, _iHeight);
  351.     else if (iTest==1) LibObject_CadreFilled_UpdateSize(_iWidth, _iHeight);
  352.  
  353.     AutoResize();
  354.  
  355.     SetParserComponent(old);
  356. }
  357.  
  358.  
  359. //***************************************************************************************************
  360. // MultiSpriteContainer
  361.  
  362. func i32x InitLibMultiSpriteContainer (i32x _iSpritemap, i32x _iNbSprites)
  363. {
  364.     // must have at least 2 sprites
  365.     _iNbSprites=_iNbSprites+2;
  366.     
  367.     var i32x iContainerIndex;
  368.     iContainerIndex=InitContainer(_iSpritemap);
  369.     SetContainerMultiSprite(iContainerIndex,_iNbSprites);
  370.     
  371.     SetContainerSprite(iContainerIndex,0,0);
  372.     SetContainerSprite(iContainerIndex,2,_iNbSprites-1);
  373.     
  374.     var i32x iSpriteIndex;
  375.     iSpriteIndex=1;
  376.     while(iSpriteIndex<=_iNbSprites-2)
  377.     {
  378.         SetContainerSprite(iContainerIndex,1,iSpriteIndex);
  379.         iSpriteIndex=iSpriteIndex+1;
  380.     }
  381.     
  382.     ResizeComponent(iContainerIndex);
  383.     return iContainerIndex;
  384. }
  385.  
  386.  
  387.  
  388. //***************************************************************************************************
  389. // MultiSpriteButton
  390.  
  391. func i32x InitLibMultiSpriteButton (i32x _iSpritemap, i32x _iNbSprites)
  392. {
  393.     // must have at least 2 sprites
  394.     _iNbSprites=_iNbSprites+2;
  395.     
  396.     var i32x iContainerIndex;
  397.     iContainerIndex=InitButton(_iSpritemap);
  398.     SetContainerMultiSprite(iContainerIndex,_iNbSprites);
  399.     
  400.     SetContainerSprite(iContainerIndex,0,0);
  401.     SetContainerSprite(iContainerIndex,2,_iNbSprites-1);
  402.     
  403.     var i32x iSpriteIndex;
  404.     iSpriteIndex=1;
  405.     while(iSpriteIndex<=_iNbSprites-2)
  406.     {
  407.         SetContainerSprite(iContainerIndex,1,iSpriteIndex);
  408.         iSpriteIndex=iSpriteIndex+1;
  409.     }
  410.     
  411.     ResizeComponent(iContainerIndex);
  412.     return iContainerIndex;
  413. }
  414.  
  415. //***************************************************************************************************
  416. // MultiSpriteButtonWithText
  417.  
  418. func i32x InitLibMultiSpriteButtonWithText (i32x _iSpritemap, i32x _iNbSprites, szx _szText,i32x _iTypo,i32x _iHelpIndex)
  419. {
  420.     var i32x iID;
  421.  
  422.     // Store init var into structure
  423.     oLibMultiText.m_tTypo = _iTypo;
  424.     oLibMultiText.m_tTexture = _iSpritemap;
  425.     oLibMultiText.m_nbSprite = _iNbSprites;
  426.     oLibMultiText.m_iHelpIndex = _iHelpIndex;
  427.     oLibMultiText.m_text=_szText;
  428.  
  429.     // init MultiSpriteButton
  430.     iID = InitObject("MultiButtonWithText",LibObject_MultiButtonWithText_Create,LibObject_MultiButtonWithText_Event);
  431.  
  432.     return iID;
  433. }
  434.  
  435. // *** Create func of a multi radio button with text ***
  436. func void LibObject_MultiButtonWithText_Create ()
  437. {
  438.     var i32x iID,tex,W_Button,W_Text,diffX,H_Button,H_Text,diffY;
  439.  
  440.     //Components Init
  441.     SetComponentNumber(2);
  442.     SetObjectMembersNumber(2);
  443.  
  444.     tex = oLibMultiText.m_tTexture;
  445.  
  446.     iID = InitLibMultiSpriteButton(tex,oLibMultiText.m_nbSprite);
  447.     SetContainerStateFunc(iID,ButtonMultiState);
  448.     SetContainerHelpIndex(iID,oLibMultiText.m_iHelpIndex);
  449.     ResizeComponent(iID);
  450.     
  451.     iID = InitContainer(oLibMultiText.m_tTypo);
  452.     SetContainerText(iID,oLibMultiText.m_text);
  453.     SetContainerOffset(iID,-1);
  454.     ResizeComponent(iID);
  455.     SetEvents(iID,GUI_NoEvent);
  456.  
  457.     W_Button=GetComponentWidth(0);
  458.     W_Text=GetComponentWidth(1);
  459.     diffX=(W_Button-W_Text)/2;
  460.     H_Button=GetComponentHeight(0);
  461.     H_Text=GetComponentHeight(1);
  462.     diffY=(H_Button-H_Text)/2;
  463.     
  464.     Seti32x(0,diffX);
  465.     Seti32x(1,diffY);
  466.  
  467.     // Set text position
  468.     SetComponentPosition(1,diffX,diffY);
  469.  
  470.     AutoResize();
  471. }
  472.     
  473. // *** Event func of a radio button with text ***
  474. func i32x LibObject_MultiButtonWithText_Event (i32x _iComponentID, i32x _iEvent)
  475. {
  476. /*    if (_iComponentID == 0)
  477.     {
  478.         if(_iEvent==GUI_RADIOBUTTON_CHANGED)
  479.         {
  480.             SetCheckboxState(1,GetCheckboxState(0));
  481.         }
  482.     }
  483.     if (_iComponentID == 1)
  484.     {
  485.         if(_iEvent==GUI_RADIOBUTTON_CHANGED)
  486.             SetCheckboxState(0,GetCheckboxState(1));
  487.     }
  488. */
  489.     PushEvent(_iEvent);    
  490.     
  491.     return 1;
  492. }
  493.  
  494.  
  495.  
  496.  
  497.  
  498.  
  499.  
  500.  
  501.  
  502.  
  503. //***************************************************************************************************
  504. // MultiSpriteCheckBox
  505.  
  506. func i32x InitLibMultiSpriteCheckBox (i32x _iSpritemap, i32x _iNbSprites)
  507. {
  508.     // must have at least 2 sprites
  509.     _iNbSprites=_iNbSprites+2;
  510.     
  511.     var i32x iContainerIndex;
  512.     iContainerIndex=InitCheckBox(_iSpritemap);
  513.     SetContainerMultiSprite(iContainerIndex,_iNbSprites);
  514.     
  515.     SetContainerSprite(iContainerIndex,0,0);
  516.     SetContainerSprite(iContainerIndex,2,_iNbSprites-1);
  517.     
  518.     var i32x iSpriteIndex;
  519.     iSpriteIndex=1;
  520.     while(iSpriteIndex<=_iNbSprites-2)
  521.     {
  522.         SetContainerSprite(iContainerIndex,1,iSpriteIndex);
  523.         iSpriteIndex=iSpriteIndex+1;
  524.     }
  525.     
  526.     ResizeComponent(iContainerIndex);
  527.     return iContainerIndex;
  528. }
  529.  
  530. //***************************************************************************************************
  531. // MultiSpriteRadioButton
  532.  
  533. func i32x InitLibMultiSpriteRadioButton (i32x _iSpritemap, i32x _iNbSprites, i32x _iHelpIndex)
  534. {
  535.     // must have at least 2 sprites
  536.     _iNbSprites=_iNbSprites+2;
  537.     
  538.     var i32x iContainerIndex;
  539.     iContainerIndex=InitRadioButton(_iSpritemap);
  540.     SetContainerMultiSprite(iContainerIndex,_iNbSprites);
  541.     
  542.     SetContainerSprite(iContainerIndex,0,0);
  543.     SetContainerSprite(iContainerIndex,2,_iNbSprites-1);
  544.     
  545.     SetContainerHelpIndex(iContainerIndex,_iHelpIndex);
  546.  
  547.     var i32x iSpriteIndex;
  548.     iSpriteIndex=1;
  549.     while(iSpriteIndex<=_iNbSprites-2)
  550.     {
  551.         SetContainerSprite(iContainerIndex,1,iSpriteIndex);
  552.         iSpriteIndex=iSpriteIndex+1;
  553.     }
  554.     
  555.     ResizeComponent(iContainerIndex);
  556.     return iContainerIndex;
  557. }
  558.  
  559.  
  560. // ***************************************************************************************************
  561. // Text button
  562. // Object with 2 containers
  563. // Container 1 : Bitmap button
  564. // Container 2 : Text button
  565. // Object Variables Members : 
  566. //                1 : Center text position x 
  567. //                2 : Center text position y 
  568. //                3 : Offset text position x 
  569. //                4 : Offset text position y 
  570. // ****************************************************************************************************
  571.  
  572. // *** Text button Create func ***
  573. func void LibObject_TextButton_Create ()
  574. {
  575.     var i32x i,tex,W_Button,W_Text,diffX,H_Button,H_Text,diffY;
  576.  
  577.     // 2 Components (bitmpat + text)
  578.     SetComponentNumber(2);
  579.  
  580.     // 4 variables members  
  581.     SetObjectMembersNumber(4);
  582.  
  583.     // Init bitmap button
  584.     tex = oLibRadioText.m_tTexture;
  585.     i = InitButton(tex);
  586.     ResizeComponent(i);
  587.     
  588.     // Init Text button
  589.     i = InitButton(tFontArial);
  590.     SetContainerText(i,oLibRadioText.m_text);
  591.     ResizeComponent(i);
  592.  
  593.     // Calc center text position
  594.     W_Button=GetComponentWidth(0);
  595.     W_Text=GetComponentWidth(1);
  596.     diffX=(W_Button-W_Text)/2;
  597.     H_Button=GetComponentHeight(0);
  598.     H_Text=GetComponentHeight(1);
  599.     diffY=(H_Button-H_Text)/2;
  600.  
  601.     // Store variable into object members
  602.     Seti32x(0,diffX);
  603.     Seti32x(1,diffY);
  604.     Seti32x(2,oLibRadioText.m_px);
  605.     Seti32x(3,oLibRadioText.m_py);
  606.  
  607.     // Set text position
  608.     SetComponentPosition(1,diffX+oLibRadioText.m_px,diffY+oLibRadioText.m_py);
  609.  
  610.     // Resize object to fit components
  611.     AutoResize();
  612. }
  613.  
  614. // *** Text button Event func ***
  615. func i32x LibObject_TextButton_Event (i32x _iComponentID, i32x _iEvent)
  616. {
  617.     // Push all component events
  618.     PushEvent(_iEvent);    
  619.     return 1;
  620. }
  621.  
  622. // *** Text button Constructor func ***
  623. // _x,_y text offset position (added to center position
  624. func i32x Init_LibObject_TextButton(i32x _texture,szx _text,i32x _x,i32x _y)
  625. {
  626.     var i32x id;
  627.  
  628.     // Save structure members before
  629.     oLibRadioText.m_tTexture = _texture;
  630.     oLibRadioText.m_text=_text;
  631.     oLibRadioText.m_px=_x;
  632.     oLibRadioText.m_py=_y;
  633.  
  634.     // Create the button
  635.     id = InitObject("TextButton", LibObject_TextButton_Create, LibObject_TextButton_Event);
  636.  
  637.     // Return Created ID into manager object
  638.     return id;
  639. }
  640.  
  641. // *** Text buttonState func mutator ***
  642. func void SetTextButtonStateFunc(i32x _id,statefunc _pSprite,statefunc _pText)
  643. {
  644.     var component pOld,pTxtBtn;
  645.  
  646.     // Get Text Button context
  647.     pTxtBtn = GetObject(_id);
  648.  
  649.     // Get current context
  650.     pOld = GetParserComponent();
  651.  
  652.     // Set Text button context
  653.     SetParserComponent(pTxtBtn);
  654.  
  655.     // Set the Bitmap Btn State func
  656.     SetContainerStateFunc(0,_pSprite);
  657.     // Set Text container state func
  658.     SetContainerStateFunc(1,_pText);
  659.  
  660.     // Restor old Parser Component
  661.     SetParserComponent(pOld);
  662. }
  663.  
  664. // *** Update text container position into TextButton object *** 
  665. func void LibObject_UpdateButtonText()
  666. {
  667.     var i32x W_Button,W_Text,diffX,H_Button,H_Text,diffY;
  668.  
  669.     W_Button=GetComponentWidth(0);
  670.     W_Text=GetComponentWidth(1);
  671.     diffX=(W_Button-W_Text)/2;
  672.     H_Button=GetComponentHeight(0);
  673.     H_Text=GetComponentHeight(1);
  674.     diffY=(H_Button-H_Text)/2;
  675.     Seti32x(0,diffX);
  676.     Seti32x(1,diffY);
  677.  
  678.     SetComponentPosition(1,diffX+Geti32x(2),diffY+Geti32x(3));
  679. }
  680.  
  681.  
  682. // *** Change caption of a text button object ***
  683. func void SetTextButtonCaption(i32x _id,szx _sztxt)
  684. {
  685.     var i32x W_Button,W_Text,diffX,H_Button,H_Text,diffY;
  686.     var component pRdBtn,old;
  687.     old = GetParserComponent();
  688.     pRdBtn = GetObject(_id);
  689.     SetParserComponent(pRdBtn);
  690.  
  691.     SetContainerText(1,_sztxt);
  692.     ResizeComponent(1);
  693.  
  694.     // Move container
  695.     LibObject_UpdateButtonText();
  696.     SetParserComponent(old);
  697. }
  698.  
  699.  
  700. //***************************************************************************************************
  701.  
  702. func void LibObject_RadioButtonWithText_Create ()
  703. {
  704.     var i32x i,tex,W_Button,W_Text,diffX,H_Button,H_Text,diffY;
  705.     //Components Init
  706.     SetComponentNumber(2);
  707.     SetObjectMembersNumber(4);
  708.  
  709.  
  710.     tex = oLibRadioText.m_tTexture;
  711.     i = InitRadioButton(tex);
  712.     ResizeComponent(i);
  713.     
  714.     i = InitRadioButton(tFontArial);
  715.     SetContainerText(i,oLibRadioText.m_text);
  716.     SetContainerOffset(i,-1);
  717.     ResizeComponent(i);
  718.     //SetStackEvents(i,GUI_NoEvent);
  719.  
  720.     W_Button=GetComponentWidth(0);
  721.     W_Text=GetComponentWidth(1);
  722.     diffX=(W_Button-W_Text)/2;
  723.     H_Button=GetComponentHeight(0);
  724.     H_Text=GetComponentHeight(1);
  725.     diffY=(H_Button-H_Text)/2;
  726.     Seti32x(0,diffX);
  727.     Seti32x(1,diffY);
  728.     Seti32x(2,oLibRadioText.m_px);
  729.     Seti32x(3,oLibRadioText.m_py);
  730.     SetComponentPosition(1,diffX+oLibRadioText.m_px,diffY+oLibRadioText.m_py);
  731.     AutoResize();
  732. }
  733.  
  734. func i32x Init_LibObject_RadioButtonWithText(i32x _texture,szx _text,i32x _x,i32x _y)
  735. {
  736.     var i32x id;
  737.  
  738.  
  739.     oLibRadioText.m_tTexture = _texture;
  740.     oLibRadioText.m_text=_text;
  741.     oLibRadioText.m_px=_x;
  742.     oLibRadioText.m_py=_y;
  743.  
  744.     id = InitObject("RadioButtonWithText", LibObject_RadioButtonWithText_Create, LibObject_RadioButtonWithText_Event);
  745.  
  746.     return id;
  747. }
  748.  
  749.  
  750.  
  751. // *** Create func of a multi radio button with text ***
  752. func void LibObject_MultiRadioButtonWithText_Create ()
  753. {
  754.     var i32x i,tex,W_Button,W_Text,diffX,H_Button,H_Text,diffY;
  755.  
  756.     //Components Init
  757.     SetComponentNumber(2);
  758.     SetObjectMembersNumber(2);
  759.  
  760.     tex = oLibMultiRadioText.m_tTexture;
  761.  
  762.     i = InitLibMultiSpriteRadioButton(tex,oLibMultiRadioText.m_nbSprite,oLibMultiRadioText.m_iHelpIndex);
  763.     ResizeComponent(i);
  764.     
  765.     
  766.     i = InitRadioButton(oLibMultiRadioText.m_tTypo);
  767.     SetContainerOffset(i,-1);
  768.     SetContainerText(i,oLibMultiRadioText.m_text);
  769.     SetContainerHelpIndex(i,oLibMultiRadioText.m_iHelpIndex);
  770.     ResizeComponent(i);
  771.     SetEvents(i,GUI_NoEvent);
  772.  
  773.     W_Button=GetComponentWidth(0);
  774.     W_Text=GetComponentWidth(1);
  775.     diffX=(W_Button-W_Text)/2;
  776.     H_Button=GetComponentHeight(0);
  777.     H_Text=GetComponentHeight(1);
  778.     diffY=(H_Button-H_Text)/2;
  779.     Seti32x(0,diffX);
  780.     Seti32x(1,diffY);
  781.     AutoResize();
  782. }
  783.  
  784.     
  785. // *** Event func of a radio button with text ***
  786. func i32x LibObject_RadioButtonWithText_Event (i32x _iComponentID, i32x _iEvent)
  787. {
  788.     if (_iComponentID == 0)
  789.     {
  790.         if(_iEvent==GUI_RADIOBUTTON_CHANGED)
  791.         {
  792.             SetCheckboxState(1,GetCheckboxState(0));
  793.         }
  794.     }
  795.     if (_iComponentID == 1)
  796.     {
  797.         if(_iEvent==GUI_RADIOBUTTON_CHANGED)
  798.             SetCheckboxState(0,GetCheckboxState(1));
  799.     }
  800.     
  801.     PushEvent(_iEvent);    
  802.     return 1;
  803. }
  804.  
  805.  
  806. // *** Constructor func of a multi radio button with text ***
  807. func i32x Init_LibObject_MultiRadioButtonWithText(i32x _texture,i32x _nbSprite,szx _text, i32x _iTypo,i32x _iHelpIndex)
  808. {
  809.     var i32x id;
  810.  
  811.     // Store init var into structure
  812.     oLibMultiRadioText.m_tTypo = _iTypo;
  813.     oLibMultiRadioText.m_tTexture = _texture;
  814.     oLibMultiRadioText.m_nbSprite = _nbSprite;
  815.     oLibMultiRadioText.m_iHelpIndex = _iHelpIndex;
  816.     oLibMultiRadioText.m_text=_text;
  817.     
  818.     // Create the object
  819.     id = InitObject("MultiRadioButtonWithText", LibObject_MultiRadioButtonWithText_Create, LibObject_RadioButtonWithText_Event);
  820.  
  821.     // Return created id into current context object
  822.     return id;
  823. }
  824.  
  825.  
  826. // *** Set state of a Radio Btn Checkbox with text ***
  827. func void SetTextRadioButtonCheckBox(i32x _id,i32x _state)
  828. {
  829.     var component pRdBtn,old;
  830.  
  831.     // Get current context
  832.     old = GetParserComponent();
  833.  
  834.     // Get Multi radio button with text context
  835.     pRdBtn = GetObject(_id);
  836.  
  837.     // Set it
  838.     SetParserComponent(pRdBtn);
  839.  
  840.     // Change visual state
  841.     SetCheckboxState(0,_state);
  842.     SetCheckboxState(1,_state);
  843.  
  844.     // Restore old parser component
  845.     SetParserComponent(old);
  846. }
  847.  
  848. //***************************************************************************************************
  849.  
  850. func void LibObject_CadreAndTexture_Create ()
  851. {
  852.     var i32x photo,cadre,texture,W_Cadre,H_Cadre,diffX,H_Texture,W_Texture,diffY;
  853.     //Components Init
  854.     SetComponentNumber(2);
  855.     
  856.  
  857.     texture = oLibCadreAndTexture.m_Texture;
  858.  
  859.     photo = InitContainer(texture);
  860.  
  861.     cadre = Init_LibObject_Cadre(oLibCadreAndTexture.CadreTexture,oLibCadreAndTexture.W_Cadre,oLibCadreAndTexture.H_Cadre);
  862.     ResizeComponent(cadre);
  863.  
  864.     W_Cadre=GetComponentWidth(cadre);
  865.     H_Cadre=GetComponentHeight(cadre);
  866.  
  867.     SetContainerSize(photo,W_Cadre,H_Cadre);
  868. /*
  869.     W_Texture=GetComponentWidth(1);
  870.     diffX=(W_Cadre-W_Texture)/2;
  871.     H_Texture=GetComponentHeight(1);
  872.     diffY=(H_Cadre-H_Texture)/2;
  873.     SetComponentPosition(1,diffX,diffY);
  874. */
  875.  
  876. }
  877.  
  878.     
  879. func i32x LibObject_CadreAndTexture_Event (i32x _iComponentID, i32x _iEvent)
  880. {
  881.     PushEvent(_iEvent);    
  882.     return 1;
  883. }
  884.  
  885.  
  886. func i32x Init_LibObject_CadreAndTexture(i32x _CadreTexture,i32x _W_Cadre,i32x _H_Cadre,i32x _m_Texture)
  887. {
  888.     var i32x id;
  889.  
  890.     oLibCadreAndTexture.m_Texture = _m_Texture;
  891.     oLibCadreAndTexture.H_Cadre = _H_Cadre;
  892.     oLibCadreAndTexture.W_Cadre=_W_Cadre;
  893.     oLibCadreAndTexture.CadreTexture=_CadreTexture;
  894.  
  895.     id = InitObject("CadreAndTexture", LibObject_CadreAndTexture_Create, LibObject_CadreAndTexture_Event);
  896.  
  897.  
  898.     return id;
  899. }
  900.  
  901.