home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / VSCPPv8.zip / VACPP / IBMCPP / samples / IOC / 2D-DRAW / 2D-MENU.CPP < prev    next >
Text File  |  1995-05-01  |  26KB  |  792 lines

  1. /******************************************************************************/
  2. /* 2D SAMPLE PROGRAM - Version 1: Class Implementation                        */
  3. /*                                                                            */
  4. /* COPYRIGHT: Copyright (C) International Business Machines Corp., 1992,1993. */
  5. /*                                                                            */
  6. /* DISCLAIMER OF WARRANTIES:                                                  */
  7. /*   The following [enclosed] code is sample code created by IBM              */
  8. /*   Corporation.  This sample code is not part of any standard IBM product   */
  9. /*   and is provided to you solely for the purpose of assisting you in the    */
  10. /*   development of your applications.  The code is provided "AS IS",         */
  11. /*   without warranty of any kind.  IBM shall not be liable for any damages   */
  12. /*   arising out of your use of the sample code, even if they have been       */
  13. /*   advised of the possibility of such damages.                              */
  14. /******************************************************************************/
  15.  
  16. #ifndef _IBASE_                         //Make sure ibase.hpp is included
  17.   #include <ibase.hpp>                  //  since that is where IC_<environ>
  18. #endif                                  //  is defined.
  19. #include "2d-draw.hpp"
  20. #include <igbitmap.hpp>
  21. #include <ifontdlg.hpp>
  22. #include <ifiledlg.hpp>
  23. #include <igrect.hpp>
  24. #include <igline.hpp>
  25.  
  26. /*------------------------------------------------------------------------------
  27. | MainWindow::command                                                          |
  28. |                                                                              |
  29. | Command handler for button bar and menu bar.                                 |
  30. ------------------------------------------------------------------------------*/
  31. Boolean MainWindow::command( ICommandEvent& event )
  32. {
  33.   Boolean fProcessed = false;
  34.   switch (event.commandId())
  35.   {
  36.     case  ID_BKCOL_WHT:
  37.     case  ID_BKCOL_BLK:
  38.     case  ID_BKCOL_DARKGRA:
  39.     case  ID_BKCOL_PALEGRA:
  40.     case  ID_BKCOL_BRO:
  41.     case  ID_BKCOL_DARKRED:
  42.     case  ID_BKCOL_RED:
  43.     case  ID_BKCOL_YEL:
  44.     case  ID_BKCOL_DARKGRE:
  45.     case  ID_BKCOL_GRE:
  46.     case  ID_BKCOL_DARKCYA:
  47.     case  ID_BKCOL_CYA:
  48.     case  ID_BKCOL_DARKBLU:
  49.     case  ID_BKCOL_BLU:
  50.     case  ID_BKCOL_DARKPIN:
  51.     case  ID_BKCOL_PIN:
  52. //      menuBar.uncheckItem(lastPenColorId)
  53. //             .checkItem(lastPenColorId = event.commandId());
  54.       drawingArea.setBackgroundColor(backColorFromId(event.commandId()))
  55.                  .refresh();
  56.  
  57.       fProcessed = true;
  58.     break;
  59.     case PALLET_NORM:
  60.     case PALLET_LINE:
  61.     case PALLET_DRAW:
  62.     case PALLET_RECTANGLE:
  63.     case PALLET_ELLIPSE:
  64.     case PALLET_POLYLINE:
  65.     case PALLET_POLYGON:
  66.     case PALLET_ARC:
  67.     case PALLET_PIE:
  68.     case PALLET_CHORD:
  69.     case PALLET_TEXT:
  70.     case PALLET_BITMAP:
  71.       drawingArea.setDrawObject((DrawingArea::DrawObject)event.commandId());
  72.       flyOver.setHelpText( drawingArea.handle(),
  73.                            IResourceId(0),
  74.                            IResourceId(event.commandId() + LONG_OFFSET ));
  75.       fProcessed = true;
  76.     break;
  77.     case  ID_COL_WHT:
  78.     case  ID_COL_BLK:
  79.     case  ID_COL_DARKGRA:
  80.     case  ID_COL_PALEGRA:
  81.     case  ID_COL_BRO:
  82.     case  ID_COL_DARKRED:
  83.     case  ID_COL_RED:
  84.     case  ID_COL_YEL:
  85.     case  ID_COL_DARKGRE:
  86.     case  ID_COL_GRE:
  87.     case  ID_COL_DARKCYA:
  88.     case  ID_COL_CYA:
  89.     case  ID_COL_DARKBLU:
  90.     case  ID_COL_BLU:
  91.     case  ID_COL_DARKPIN:
  92.     case  ID_COL_PIN:
  93.       menuBar.uncheckItem(lastPenColorId)
  94.              .checkItem(lastPenColorId = event.commandId());
  95.       drawingArea.graphicBundle().setPenColor(penColorFromId(lastPenColorId));
  96.       fProcessed = true;
  97.     break;
  98.     case ID_FLCOL_WHT:
  99.     case ID_FLCOL_BLK:
  100.     case ID_FLCOL_DARKGRA:
  101.     case ID_FLCOL_PALEGRA:
  102.     case ID_FLCOL_BRO:
  103.     case ID_FLCOL_DARKRED:
  104.     case ID_FLCOL_RED:
  105.     case ID_FLCOL_YEL:
  106.     case ID_FLCOL_DARKGRE:
  107.     case ID_FLCOL_GRE:
  108.     case ID_FLCOL_DARKCYA:
  109.     case ID_FLCOL_CYA:
  110.     case ID_FLCOL_DARKBLU:
  111.     case ID_FLCOL_BLU:
  112.     case ID_FLCOL_DARKPIN:
  113.     case ID_FLCOL_PIN:
  114.       menuBar.uncheckItem(lastFillColorId)
  115.              .checkItem(lastFillColorId = event.commandId());
  116.       drawingArea.graphicBundle().setFillColor(fillColorFromId(lastFillColorId));
  117.       fProcessed = true;
  118.     break;
  119.     case ID_PENPATTERN_SOLID:
  120.     case ID_PENPATTERN_NOSHADE:
  121.     case ID_PENPATTERN_DIAG4:
  122.     case ID_PENPATTERN_DIAG3:
  123.     case ID_PENPATTERN_DIAG2:
  124.     case ID_PENPATTERN_DIAG1:
  125.     case ID_PENPATTERN_VERT:
  126.     case ID_PENPATTERN_HORIZ:
  127.     case ID_PENPATTERN_DENSE8:
  128.     case ID_PENPATTERN_DENSE7:
  129.     case ID_PENPATTERN_DENSE6:
  130.     case ID_PENPATTERN_DENSE5:
  131.     case ID_PENPATTERN_DENSE4:
  132.     case ID_PENPATTERN_DENSE3:
  133.     case ID_PENPATTERN_DENSE2:
  134.     case ID_PENPATTERN_DENSE1:
  135.       menuBar.uncheckItem(lastPenPatternId)
  136.              .checkItem(lastPenPatternId = event.commandId());
  137.       drawingArea.graphicBundle().setPenPattern(patternFromId(lastPenPatternId));
  138.       fProcessed = true;
  139.     break;
  140.     case ID_FILLPATTERN_SOLID:
  141.     case ID_FILLPATTERN_NOSHADE:
  142.     case ID_FILLPATTERN_DIAG4:
  143.     case ID_FILLPATTERN_DIAG3:
  144.     case ID_FILLPATTERN_DIAG2:
  145.     case ID_FILLPATTERN_DIAG1:
  146.     case ID_FILLPATTERN_VERT:
  147.     case ID_FILLPATTERN_HORIZ:
  148.     case ID_FILLPATTERN_DENSE8:
  149.     case ID_FILLPATTERN_DENSE7:
  150.     case ID_FILLPATTERN_DENSE6:
  151.     case ID_FILLPATTERN_DENSE5:
  152.     case ID_FILLPATTERN_DENSE4:
  153.     case ID_FILLPATTERN_DENSE3:
  154.     case ID_FILLPATTERN_DENSE2:
  155.     case ID_FILLPATTERN_DENSE1:
  156.       menuBar.uncheckItem(lastFillPatternId)
  157.              .checkItem(lastFillPatternId = event.commandId());
  158.       drawingArea.graphicBundle().setFillPattern(patternFromId(lastFillPatternId));
  159.       fProcessed = true;
  160.     break;
  161.     case ID_PENTYPE_ALTERNATE:
  162.     case ID_PENTYPE_SOLID:
  163.     case ID_PENTYPE_DASHDOUBLEDOT:
  164.     case ID_PENTYPE_LONGDASH:
  165.     case ID_PENTYPE_DOUBLEDOT:
  166.     case ID_PENTYPE_DASHDOT:
  167.     case ID_PENTYPE_SHORTDASH:
  168.     case ID_PENTYPE_DOT:
  169.       menuBar.uncheckItem(lastPenTypeId)
  170.              .checkItem(lastPenTypeId = event.commandId());
  171.       drawingArea.graphicBundle().setPenType(penTypeFromId(lastPenTypeId));
  172.       fProcessed = true;
  173.     break;
  174.     case ID_PENWIDTH_1:
  175.     case ID_PENWIDTH_2:
  176.     case ID_PENWIDTH_3:
  177.     case ID_PENWIDTH_4:
  178.       menuBar.uncheckItem(lastPenWidthId)
  179.              .checkItem(lastPenWidthId = event.commandId());
  180.       drawingArea.graphicBundle().setPenWidth(penWidthFromId(lastPenWidthId));
  181.     break;
  182.     case ID_SETFONT:
  183.     {
  184.       IFont curFont(drawingArea.currentFont());
  185.       curFont.useVectorOnly( );
  186.       IFontDialog::Settings fsettings(&curFont);
  187.       fsettings.setTitle("Font Dialog");    //Set Open Dialog Title from Resource  .
  188.  
  189.       IFontDialog fontd(                    //Create Font Open Dialiog             .
  190.         (IWindow*)desktopWindow(),          //  Parent is Desktop                  .
  191.         (IWindow*)this,
  192.         IFontDialog::defaultStyle(),        //  Set default Style                  .
  193.         fsettings);                         //  settings                           .
  194.       if (fontd.pressedOK())                //Check if ok from Font open dialog    .
  195.       {                                     //                                     .
  196.         drawingArea.setCurrentFont( curFont );
  197.       } /* endif */                         //                                     .
  198.       fProcessed = true;
  199.     }
  200.     break;
  201.     case ID_SETBITMAP:
  202.     {
  203.       IFileDialog::Settings fsettings;      //                                     .
  204.       fsettings.setTitle("Load an Image File");//Set Open Dialog Title from Resource  .
  205.       fsettings.setFileName("*.bmp");       //Set FileNames to *.bmp               .
  206.  
  207.       IFileDialog fd(                       //Create File Open Dialiog             .
  208.         (IWindow*)desktopWindow(),          //  Parent is Desktop                  .
  209.         (IWindow*)this, fsettings);         //  Owner is me with settings          .
  210.       if (fd.pressedOK())                   //Check if ok from file open dialog    .
  211.       {
  212.         drawingArea.setBitmapFileName(fd.fileName());
  213.       }
  214.     }
  215.     break;
  216.     case ID_FILL:
  217.       menuBar.uncheckItem(lastDrawOperationId)
  218.              .checkItem(lastDrawOperationId = event.commandId());
  219.       drawingArea.graphicBundle().setDrawOperation(IGraphicBundle::fill);
  220.       break;
  221.     case ID_FRAME:
  222.       menuBar.uncheckItem(lastDrawOperationId)
  223.              .checkItem(lastDrawOperationId = event.commandId());
  224.       drawingArea.graphicBundle().setDrawOperation(IGraphicBundle::frame);
  225.       break;
  226.     case ID_FILLANDFRAME:
  227.       menuBar.uncheckItem(lastDrawOperationId)
  228.              .checkItem(lastDrawOperationId = event.commandId());
  229.       drawingArea.graphicBundle().setDrawOperation(IGraphicBundle::fillAndFrame);
  230.       break;
  231.     break;
  232.  
  233.   } /* endswitch */
  234.  
  235.   return fProcessed;
  236. }
  237.  
  238.  
  239. /*------------------------------------------------------------------------------
  240. | MainWindow::setSize                                                          |
  241. |                                                                              |
  242. | Overloaded function from IMenuDrawItemHandler.  Sets the width and height    |
  243. | of the owner draw menu items.                                                |
  244. ------------------------------------------------------------------------------*/
  245. Boolean MainWindow::setSize(IMenuDrawItemEvent& evt, ISize& newSize)
  246. {
  247.   switch (evt.itemId())
  248.   {
  249.     case ID_PENTYPE_ALTERNATE:
  250.     case ID_PENTYPE_SOLID:
  251.     case ID_PENTYPE_DASHDOUBLEDOT:
  252.     case ID_PENTYPE_LONGDASH:
  253.     case ID_PENTYPE_DOUBLEDOT:
  254.     case ID_PENTYPE_DASHDOT:
  255.     case ID_PENTYPE_SHORTDASH:
  256.     case ID_PENTYPE_DOT:
  257.  
  258.     case ID_PENWIDTH_4:
  259.     case ID_PENWIDTH_3:
  260.     case ID_PENWIDTH_2:
  261.     case ID_PENWIDTH_1:
  262.       newSize.setWidth( 80 ).setHeight( 15 );
  263.     break;
  264.     default:
  265.       newSize.setWidth( 10 ).setHeight( 20 );
  266.     break;
  267.   }
  268.   return True;
  269. }
  270.  
  271. /*------------------------------------------------------------------------------
  272. | MainWindow::setSize                                                          |
  273. |                                                                              |
  274. | Overloaded function from IMenuDrawItemHandler.  Draws all of the owner       |
  275. | draw menu items.                                                             |
  276. ------------------------------------------------------------------------------*/
  277. Boolean MainWindow::draw(IMenuDrawItemEvent& evt, DrawFlag& flag)
  278. {
  279.   IGraphicContext gc(evt.itemPresSpaceHandle());
  280.  
  281.   gc.setPenType( IGraphicBundle::invisible );
  282.   if (evt.isSelected())
  283.   {
  284.     gc.setPenColor(IGUIColor(IGUIColor::menuHiliteText))
  285.       .setFillColor(IGUIColor(IGUIColor::menuHiliteBgnd))
  286.       .setBackgroundColor(IGUIColor(IGUIColor::menuHiliteBgnd));
  287.   }
  288.   else
  289.   {
  290.     gc.setPenColor(IGUIColor(IGUIColor::menuText))
  291.       .setFillColor(IGUIColor(IGUIColor::menuBgnd))
  292.       .setBackgroundColor(IGUIColor(IGUIColor::menuBgnd));
  293.   }
  294.   IGRectangle box( evt.itemRect());
  295.   box.drawOn( gc );
  296.  
  297.   flag = IMenuDrawItemHandler::drewSelected;
  298.  
  299.   if (evt.isChecked())
  300.   {
  301.     flag |= IMenuDrawItemHandler::drewChecked;
  302.     switch (evt.itemId())
  303.     {
  304.       default:
  305.       {
  306. //        IBitmap checkMark( ISystemBitmapHandle::menuCheckMark );
  307. //        checkMark.drawOn( gc, evt.itemRect().bottomLeft());
  308.       }
  309.       break;
  310.     } /* endswitch */
  311.   }
  312.  
  313.   IRectangle rc(IPoint( evt.itemRect().bottomLeft().x()+20,
  314.                         evt.itemRect().bottomLeft().y()+3 ),
  315.                 IPoint( evt.itemRect().topRight().x()-3,
  316.                         evt.itemRect().topRight().y()-3 ));
  317.   switch (evt.itemId())
  318.   {
  319.     case ID_FLCOL_WHT:
  320.     case ID_FLCOL_BLK:
  321.     case ID_FLCOL_DARKGRA:
  322.     case ID_FLCOL_PALEGRA:
  323.     case ID_FLCOL_BRO:
  324.     case ID_FLCOL_DARKRED:
  325.     case ID_FLCOL_RED:
  326.     case ID_FLCOL_YEL:
  327.     case ID_FLCOL_DARKGRE:
  328.     case ID_FLCOL_GRE:
  329.     case ID_FLCOL_DARKCYA:
  330.     case ID_FLCOL_CYA:
  331.     case ID_FLCOL_DARKBLU:
  332.     case ID_FLCOL_BLU:
  333.     case ID_FLCOL_DARKPIN:
  334.     case ID_FLCOL_PIN:
  335.       gc.setFillColor(fillColorFromId(evt.itemId()));
  336.       box.setEnclosingRect(rc).drawOn(gc);
  337.     break;
  338.     case ID_BKCOL_WHT:
  339.     case ID_BKCOL_BLK:
  340.     case ID_BKCOL_DARKGRA:
  341.     case ID_BKCOL_PALEGRA:
  342.     case ID_BKCOL_BRO:
  343.     case ID_BKCOL_DARKRED:
  344.     case ID_BKCOL_RED:
  345.     case ID_BKCOL_YEL:
  346.     case ID_BKCOL_DARKGRE:
  347.     case ID_BKCOL_GRE:
  348.     case ID_BKCOL_DARKCYA:
  349.     case ID_BKCOL_CYA:
  350.     case ID_BKCOL_DARKBLU:
  351.     case ID_BKCOL_BLU:
  352.     case ID_BKCOL_DARKPIN:
  353.     case ID_BKCOL_PIN:
  354.     {
  355.       gc.setFillColor(backColorFromId(evt.itemId()));
  356.       box.setEnclosingRect(rc).drawOn(gc);
  357.     }
  358.     break;
  359.  
  360.     case ID_COL_WHT:
  361.     case ID_COL_BLK:
  362.     case ID_COL_DARKGRA:
  363.     case ID_COL_PALEGRA:
  364.     case ID_COL_BRO:
  365.     case ID_COL_DARKRED:
  366.     case ID_COL_RED:
  367.     case ID_COL_YEL:
  368.     case ID_COL_DARKGRE:
  369.     case ID_COL_GRE:
  370.     case ID_COL_DARKCYA:
  371.     case ID_COL_CYA:
  372.     case ID_COL_DARKBLU:
  373.     case ID_COL_BLU:
  374.     case ID_COL_DARKPIN:
  375.     case ID_COL_PIN:
  376.       gc.setFillColor(penColorFromId(evt.itemId()));
  377.       box.setEnclosingRect(rc).drawOn(gc);
  378.     break;
  379.     case ID_PENPATTERN_SOLID:
  380.     case ID_PENPATTERN_NOSHADE:
  381.     case ID_PENPATTERN_DIAG4:
  382.     case ID_PENPATTERN_DIAG3:
  383.     case ID_PENPATTERN_DIAG2:
  384.     case ID_PENPATTERN_DIAG1:
  385.     case ID_PENPATTERN_VERT:
  386.     case ID_PENPATTERN_HORIZ:
  387.     case ID_PENPATTERN_DENSE8:
  388.     case ID_PENPATTERN_DENSE7:
  389.     case ID_PENPATTERN_DENSE6:
  390.     case ID_PENPATTERN_DENSE5:
  391.     case ID_PENPATTERN_DENSE4:
  392.     case ID_PENPATTERN_DENSE3:
  393.     case ID_PENPATTERN_DENSE2:
  394.     case ID_PENPATTERN_DENSE1:
  395.     case ID_FILLPATTERN_SOLID:
  396.     case ID_FILLPATTERN_NOSHADE:
  397.     case ID_FILLPATTERN_DIAG4:
  398.     case ID_FILLPATTERN_DIAG3:
  399.     case ID_FILLPATTERN_DIAG2:
  400.     case ID_FILLPATTERN_DIAG1:
  401.     case ID_FILLPATTERN_VERT:
  402.     case ID_FILLPATTERN_HORIZ:
  403.     case ID_FILLPATTERN_DENSE8:
  404.     case ID_FILLPATTERN_DENSE7:
  405.     case ID_FILLPATTERN_DENSE6:
  406.     case ID_FILLPATTERN_DENSE5:
  407.     case ID_FILLPATTERN_DENSE4:
  408.     case ID_FILLPATTERN_DENSE3:
  409.     case ID_FILLPATTERN_DENSE2:
  410.     case ID_FILLPATTERN_DENSE1:
  411.     {
  412.       gc.setFillColor( IColor::blue )
  413.         .setFillPattern(patternFromId(evt.itemId()))
  414.         .setPenPattern(patternFromId(evt.itemId()))        // remove this line
  415.         .setPenColor( IColor::blue )
  416.         .setPenWidth( rc.height() );
  417.       IGLine line(rc.leftCenter(), rc.rightCenter());
  418.       line.drawOn( gc );
  419.     }
  420.     break;
  421.     case ID_PENTYPE_ALTERNATE:
  422.     case ID_PENTYPE_SOLID:
  423.     case ID_PENTYPE_DASHDOUBLEDOT:
  424.     case ID_PENTYPE_LONGDASH:
  425.     case ID_PENTYPE_DOUBLEDOT:
  426.     case ID_PENTYPE_DASHDOT:
  427.     case ID_PENTYPE_SHORTDASH:
  428.     case ID_PENTYPE_DOT:
  429.       gc.setPenType( penTypeFromId( evt.itemId()));
  430.       {
  431.         gc.setPenColor( IColor::blue );
  432.         IGLine line( IPoint( evt.itemRect().bottomLeft().x()+20,
  433.                              evt.itemRect().leftCenter().y() ),
  434.                      IPoint( evt.itemRect().topRight().x()-3,
  435.                              evt.itemRect().leftCenter().y() ));
  436.         line.drawOn( gc );
  437.       }
  438.     break;
  439.     case ID_PENWIDTH_4:
  440.     case ID_PENWIDTH_3:
  441.     case ID_PENWIDTH_2:
  442.     case ID_PENWIDTH_1:
  443.       gc.setPenType( IGraphicBundle::solid )
  444.         .setPenColor( IColor::blue )
  445.         .setPenWidth( penWidthFromId( evt.itemId()));
  446.       {
  447.         IGLine line( IPoint( evt.itemRect().bottomLeft().x()+20,
  448.                              evt.itemRect().leftCenter().y() ),
  449.                      IPoint( evt.itemRect().topRight().x()-3,
  450.                              evt.itemRect().leftCenter().y() ));
  451.         line.drawOn( gc );
  452.       }
  453.     break;
  454.   }
  455.   return False;
  456. }
  457.  
  458. /*------------------------------------------------------------------------------
  459. | MainWindow::backColorFromId                                                  |
  460. |                                                                              |
  461. | Static function which maps menu id values to their corresponding IColor      |
  462. | equivalents.                                                                 |
  463. ------------------------------------------------------------------------------*/
  464. IColor MainWindow::backColorFromId( unsigned long Identifier )
  465. {
  466.   IColor::Color col;
  467.   switch (Identifier)
  468.   {
  469.     case ID_BKCOL_WHT:
  470.       col = IColor::white;
  471.     break;
  472.     case ID_BKCOL_BLK:
  473.       col = IColor::black;
  474.     break;
  475.     case ID_BKCOL_DARKGRA:
  476.       col = IColor::darkGray;
  477.     break;
  478.     case ID_BKCOL_PALEGRA:
  479.       col = IColor::paleGray;
  480.     break;
  481.     case ID_BKCOL_BRO:
  482.       col = IColor::brown;
  483.     break;
  484.     case ID_BKCOL_DARKRED:
  485.       col = IColor::darkRed;
  486.     break;
  487.     case ID_BKCOL_RED:
  488.       col = IColor::red;
  489.     break;
  490.     case ID_BKCOL_YEL:
  491.       col = IColor::yellow;
  492.     break;
  493.     case ID_BKCOL_DARKGRE:
  494.       col = IColor::darkGreen;
  495.     break;
  496.     case ID_BKCOL_GRE:
  497.       col = IColor::green;
  498.     break;
  499.     case ID_BKCOL_DARKCYA:
  500.       col = IColor::darkCyan;
  501.     break;
  502.     case ID_BKCOL_CYA:
  503.       col = IColor::cyan;
  504.     break;
  505.     case ID_BKCOL_DARKBLU:
  506.       col = IColor::darkBlue;
  507.     break;
  508.     case ID_BKCOL_BLU:
  509.       col = IColor::blue;
  510.     break;
  511.     case ID_BKCOL_DARKPIN:
  512.       col = IColor::darkPink;
  513.     break;
  514.     case ID_BKCOL_PIN:
  515.       col = IColor::pink;
  516.     break;
  517.   } /* endswitch */
  518.   return IColor( col );
  519. }
  520.  
  521. /*------------------------------------------------------------------------------
  522. | MainWindow::fillColorFromId                                                  |
  523. |                                                                              |
  524. | Static function which maps menu id values to their corresponding IColor      |
  525. | equivalents.                                                                 |
  526. ------------------------------------------------------------------------------*/
  527. IColor MainWindow::fillColorFromId( unsigned long Identifier )
  528. {
  529.   IColor::Color col;
  530.   switch (Identifier)
  531.   {
  532.     case ID_FLCOL_WHT:
  533.       col = IColor::white;
  534.     break;
  535.     case ID_FLCOL_BLK:
  536.       col = IColor::black;
  537.     break;
  538.     case ID_FLCOL_DARKGRA:
  539.       col = IColor::darkGray;
  540.     break;
  541.     case ID_FLCOL_PALEGRA:
  542.       col = IColor::paleGray;
  543.     break;
  544.     case ID_FLCOL_BRO:
  545.       col = IColor::brown;
  546.     break;
  547.     case ID_FLCOL_DARKRED:
  548.       col = IColor::darkRed;
  549.     break;
  550.     case ID_FLCOL_RED:
  551.       col = IColor::red;
  552.     break;
  553.     case ID_FLCOL_YEL:
  554.       col = IColor::yellow;
  555.     break;
  556.     case ID_FLCOL_DARKGRE:
  557.       col = IColor::darkGreen;
  558.     break;
  559.     case ID_FLCOL_GRE:
  560.       col = IColor::green;
  561.     break;
  562.     case ID_FLCOL_DARKCYA:
  563.       col = IColor::darkCyan;
  564.     break;
  565.     case ID_FLCOL_CYA:
  566.       col = IColor::cyan;
  567.     break;
  568.     case ID_FLCOL_DARKBLU:
  569.       col = IColor::darkBlue;
  570.     break;
  571.     case ID_FLCOL_BLU:
  572.       col = IColor::blue;
  573.     break;
  574.     case ID_FLCOL_DARKPIN:
  575.       col = IColor::darkPink;
  576.     break;
  577.     case ID_FLCOL_PIN:
  578.       col = IColor::pink;
  579.     break;
  580.   } /* endswitch */
  581.   return IColor( col );
  582. }
  583.  
  584. /*------------------------------------------------------------------------------
  585. | MainWindow::penColorFromId                                                   |
  586. |                                                                              |
  587. | Static function which maps menu id values to their corresponding IColor      |
  588. | equivalents.                                                                 |
  589. ------------------------------------------------------------------------------*/
  590. IColor MainWindow::penColorFromId( unsigned long Identifier )
  591. {
  592.   IColor::Color col;
  593.   switch (Identifier)
  594.   {
  595.     case ID_COL_WHT:
  596.       col = IColor::white;
  597.     break;
  598.     case ID_COL_BLK:
  599.       col = IColor::black;
  600.     break;
  601.     case ID_COL_DARKGRA:
  602.       col = IColor::darkGray;
  603.     break;
  604.     case ID_COL_PALEGRA:
  605.       col = IColor::paleGray;
  606.     break;
  607.     case ID_COL_BRO:
  608.       col = IColor::brown;
  609.     break;
  610.     case ID_COL_DARKRED:
  611.       col = IColor::darkRed;
  612.     break;
  613.     case ID_COL_RED:
  614.       col = IColor::red;
  615.     break;
  616.     case ID_COL_YEL:
  617.       col = IColor::yellow;
  618.     break;
  619.     case ID_COL_DARKGRE:
  620.       col = IColor::darkGreen;
  621.     break;
  622.     case ID_COL_GRE:
  623.       col = IColor::green;
  624.     break;
  625.     case ID_COL_DARKCYA:
  626.       col = IColor::darkCyan;
  627.     break;
  628.     case ID_COL_CYA:
  629.       col = IColor::cyan;
  630.     break;
  631.     case ID_COL_DARKBLU:
  632.       col = IColor::darkBlue;
  633.     break;
  634.     case ID_COL_BLU:
  635.       col = IColor::blue;
  636.     break;
  637.     case ID_COL_DARKPIN:
  638.       col = IColor::darkPink;
  639.     break;
  640.     case ID_COL_PIN:
  641.       col = IColor::pink;
  642.     break;
  643.   } /* endswitch */
  644.   return IColor( col );
  645. }
  646.  
  647.  
  648. /*------------------------------------------------------------------------------
  649. | MainWindow::patternFromId                                                    |
  650. |                                                                              |
  651. | Static function which maps menu id values to their corresponding pattern     |
  652. | equivalents.                                                                 |
  653. ------------------------------------------------------------------------------*/
  654. unsigned long MainWindow::patternFromId( unsigned long Identifier )
  655. {
  656.   unsigned long pattern;
  657.   switch (Identifier)
  658.   {
  659.     case ID_PENPATTERN_SOLID:
  660.     case ID_FILLPATTERN_SOLID:
  661.       pattern = IGraphicBundle::filled;
  662.     break;
  663.     case ID_PENPATTERN_NOSHADE:
  664.     case ID_FILLPATTERN_NOSHADE:
  665.       pattern = IGraphicBundle::hollow;
  666.     break;
  667.     case ID_PENPATTERN_DIAG4:
  668.     case ID_FILLPATTERN_DIAG4:
  669.       pattern = IGraphicBundle::backwardDiag2;
  670.     break;
  671.     case ID_PENPATTERN_DIAG3:
  672.     case ID_FILLPATTERN_DIAG3:
  673.       pattern = IGraphicBundle::backwardDiag1;
  674.     break;
  675.     case ID_PENPATTERN_DIAG2:
  676.     case ID_FILLPATTERN_DIAG2:
  677.       pattern = IGraphicBundle::forewardDiag2;
  678.     break;
  679.     case ID_PENPATTERN_DIAG1:
  680.     case ID_FILLPATTERN_DIAG1:
  681.       pattern = IGraphicBundle::forewardDiag1;
  682.     break;
  683.     case ID_PENPATTERN_VERT:
  684.     case ID_FILLPATTERN_VERT:
  685.       pattern = IGraphicBundle::vertical;
  686.     break;
  687.     case ID_PENPATTERN_HORIZ:
  688.     case ID_FILLPATTERN_HORIZ:
  689.       pattern = IGraphicBundle::horizontal;
  690.     break;
  691.     case ID_PENPATTERN_DENSE8:
  692.     case ID_FILLPATTERN_DENSE8:
  693.       pattern = IGraphicBundle::dense8;
  694.     break;
  695.     case ID_PENPATTERN_DENSE7:
  696.     case ID_FILLPATTERN_DENSE7:
  697.       pattern = IGraphicBundle::dense7;
  698.     break;
  699.     case ID_PENPATTERN_DENSE6:
  700.     case ID_FILLPATTERN_DENSE6:
  701.       pattern = IGraphicBundle::dense6;
  702.     break;
  703.     case ID_PENPATTERN_DENSE5:
  704.     case ID_FILLPATTERN_DENSE5:
  705.       pattern = IGraphicBundle::dense5;
  706.     break;
  707.     case ID_PENPATTERN_DENSE4:
  708.     case ID_FILLPATTERN_DENSE4:
  709.       pattern = IGraphicBundle::dense4;
  710.     break;
  711.     case ID_PENPATTERN_DENSE3:
  712.     case ID_FILLPATTERN_DENSE3:
  713.       pattern = IGraphicBundle::dense3;
  714.     break;
  715.     case ID_PENPATTERN_DENSE2:
  716.     case ID_FILLPATTERN_DENSE2:
  717.       pattern = IGraphicBundle::dense2;
  718.     break;
  719.     case ID_PENPATTERN_DENSE1:
  720.     case ID_FILLPATTERN_DENSE1:
  721.       pattern = IGraphicBundle::dense1;
  722.     break;
  723.   }
  724.   return pattern;
  725. }
  726.  
  727. /*------------------------------------------------------------------------------
  728. | MainWindow::patterFromId                                                     |
  729. |                                                                              |
  730. | Static function which maps menu id values to their corresponding pen type    |
  731. | equivalents.                                                                 |
  732. ------------------------------------------------------------------------------*/
  733. IGraphicBundle::PenType MainWindow::penTypeFromId( unsigned long Identifier )
  734. {
  735.   IGraphicBundle::PenType penType;
  736.   switch (Identifier)
  737.   {
  738.     case ID_PENTYPE_ALTERNATE:
  739.       penType = IGraphicBundle::alternate;
  740.     break;
  741.     case ID_PENTYPE_SOLID:
  742.       penType = IGraphicBundle::solid;
  743.     break;
  744.     case ID_PENTYPE_DASHDOUBLEDOT:
  745.       penType = IGraphicBundle::dashDoubleDot;
  746.     break;
  747.     case ID_PENTYPE_LONGDASH:
  748.       penType = IGraphicBundle::longDash;
  749.     break;
  750.     case ID_PENTYPE_DOUBLEDOT:
  751.       penType = IGraphicBundle::doubleDot;
  752.     break;
  753.     case ID_PENTYPE_DASHDOT:
  754.       penType = IGraphicBundle::dashDot;
  755.     break;
  756.     case ID_PENTYPE_SHORTDASH:
  757.       penType = IGraphicBundle::shortDash;
  758.     break;
  759.     case ID_PENTYPE_DOT:
  760.       penType = IGraphicBundle::dot;
  761.     break;
  762.   }
  763.   return penType;
  764. }
  765.  
  766. /*------------------------------------------------------------------------------
  767. | MainWindow::patterFromId                                                     |
  768. |                                                                              |
  769. | Static function which maps menu id values to their corresponding pen width   |
  770. | equivalents.                                                                 |
  771. ------------------------------------------------------------------------------*/
  772. unsigned long MainWindow::penWidthFromId( unsigned long Identifier )
  773. {
  774.   unsigned long width;
  775.   switch (Identifier)
  776.   {
  777.     case ID_PENWIDTH_1:
  778.       width = 1;
  779.     break;
  780.     case ID_PENWIDTH_2:
  781.       width = 2;
  782.     break;
  783.     case ID_PENWIDTH_3:
  784.       width = 4;
  785.     break;
  786.     case ID_PENWIDTH_4:
  787.       width = 6;
  788.     break;
  789.   } /* endswitch */
  790.   return width;
  791. }
  792.