home *** CD-ROM | disk | FTP | other *** search
/ The CDPD Public Domain Collection for CDTV 4 / CDPD_IV.bin / fish / 911-930 / ff922 / designerdemo / designerdemo.help < prev    next >
Text File  |  1994-05-04  |  28KB  |  609 lines

  1. introhelp
  2.  
  3.                                The Designer
  4.  
  5.                            (C) Ian OConnor 1993
  6.  
  7.                               Release : 1.0
  8.  
  9.                   Demostration Version, Distribute Freely
  10.  
  11.   The Designer is shareware, you may distribute copies of this demo
  12.  version to anybody but all files must stay unchanged and all must be
  13.  included in the distribution. This software is provided "AS IS", without
  14.  warranty of any kind, either expressed or implied. The author is not
  15.  responsible for any damage or loss of data due to use of this program,
  16.  these are solely the users concern.
  17.   This program was written to make designing Intuition interfaces for your
  18.  programs easier and quicker. It will produce code to open and close
  19.  Windows, make Menus, open Libraries, make Images and much more. It also 
  20.  has the ability to produce IDCMP handling routines for your applications 
  21.  and a few other useful routines.
  22.   It produces a file, that you can compile and use in your program, that 
  23.  contains all the routines you need. It is recommended that you do not 
  24.  edit this file because you will then be able to update it in the future 
  25.  for new features etc.
  26.   The actual production of the source is handled by a program called a
  27.  producer, stored in the same directory as The Designer. You select which
  28.  language you want be selecting the relevant producer in code options.
  29.   Help is provided on most functions, telling you what they do and how
  30.  they are used. You can read the help file seperately if you prefer.
  31.   This program is provided as is, I can guarantee nothing. I am not aware
  32.  of any bugs in this program, although it is unlikely that there are none.
  33.  Bug reports can be sent to me at the address below but only send them if
  34.  you are registering, I will then fix any problems in due course.
  35.   My postal address is
  36.                                I OConnor
  37.                                3 Askerton Close
  38.                                Nine Elms
  39.                                Swindon
  40.                                SN5 9XB
  41.                                UK
  42.   To get the full version of the Designer send 15 pounds sterling to the
  43.  above address, it must be in sterling and drawable on a UK bank.
  44.   This will get you a fully working registered version posted to you as 
  45.  soon as possible.
  46.                                                                Ian OConnor
  47.  
  48. end
  49. mainhelp
  50.                                Main Window
  51.  
  52.   This is the window presented on running the program, the creation of
  53.  windows, menus and importing of images is all handled here, as well as
  54.  code production and file operations. The gadgets are as follows.
  55.    About      : A little message.
  56.    Prefs      : Here you can set up your own prefs for The Designer. Only
  57.                 options about the editor are here.
  58.    Code       : Allows you to set code preferences changing what is 
  59.                 produced, library options are also here.
  60.    Open, Save : File operations. Designer files have a .Des appended to
  61.                 their filenames.
  62.    Generate   : Saves the .des file and calls the Producer specified in
  63.                 the code options.
  64.    Help       : General help on most of the Designer.
  65.  
  66.   New, Delete and Edit allow you to play with the Windows, Menus and 
  67.  Images the Designer produces.
  68.   Keyboard shortcuts are underlined on the gadgets except for W, M and I
  69.  which change the list displayed.
  70.  
  71. end
  72. maincodehelp
  73.                               Main Code Help
  74.  
  75.   Here Several options acting on the whole product are set. If comment 
  76.  code is checked then the code produced is commented to its maximum 
  77.  extent. This overrides the comment field of window code. If WaitPointer
  78.  is checked then a standard Release 2.0 waitpointer is included, to use it
  79.  a command like this is needed :
  80.    SetPointer(Win, WaitPointer, 16, 16, -6, 0);
  81.      [ pWaitPointer in pascal ]
  82.   If IDCMP Handler is checked then the framework of an idcmp handler is
  83.  produced for each window and menu designed. These functions should then
  84.  be copied into your own code and edited.
  85.   Makelibs means that library opening code will be created, see Libraries.
  86.   
  87.   The Code :
  88.   
  89.    Pascal :
  90.      
  91.      For each window 2 or 3 functions will be created :
  92.          Function OpenWindow'WindowLabel':Boolean;
  93.          Procedure CloseWindow'WindowLabel';
  94.          Procedure RendWindow'WindowLabel';    Optional
  95.      The first of these may need parameters depending on its code options.
  96.     Just check the header in the unit for details.
  97.      Their also exist several global variables for each window :
  98.          'WindowLabel' : pWindow;
  99.          'WindowLabel'glist : pGadget;
  100.          'WindowLabel'VisualInfo : Pointer;
  101.          'WindowLabel'Gads : array[] of pgadget;    Optional
  102.          'WindowLabel'Depth : Word;                 Optional
  103.     as well as a few others for the window gadgets.
  104.      For each menu one function is produced
  105.          Function MakeMenu'MenuLabel'( VisulaInfo : Pointer): Boolean;
  106.     the menus can be freed with FreeMenu as normal.
  107.      The global 'MenuLabel' is a pointer to the allocated menu structure.
  108.      All images are created as const data and are allocated to chip ram by
  109.     the makeimages fuction, free them on exit with free images, only free 
  110.     them if they are succesfully allocated.
  111.      Several procedures are included to make life easier :
  112.     
  113.       Procedure Settagitem( pt : ptagitem ; tag : long ; data : long);
  114.       procedure printstring(pwin:pwindow;x,y:word;s:string;f,b:byte;
  115.                             font:ptextattr;dm:byte);
  116.       procedure stripintuimessages(mp:pmsgport;win:pwindow);
  117.       procedure closewindowsafely(win : pwindow);
  118.       function generalgadtoolsgad(kind         : long;
  119.                                   x,y,w,h,id   : word;
  120.                                   ptxt         : pbyte;
  121.                                   font         : ptextattr;
  122.                                   flags        : long;
  123.                                   visinfo      : pointer;
  124.                                   pprevgad     : pgadget;
  125.                                   userdata     : pointer;
  126.                                   taglist      : ptagitem
  127.                                  ):pgadget;
  128.       function getstringfromgad(pgad:pgadget):string;
  129.       function getintegerfromgad(pgad:pgadget):long;
  130.       function GadSelected(pgad:pgadget):Boolean;
  131.       procedure gt_setsinglegadgetattr(gad:pgadget;win:pwindow;
  132.                                        tag1,tag2:long);
  133.  
  134.    C :
  135.      
  136.      For details of the functions produced read them! The definitions are
  137.     in the header file produced and the functions do approximately the
  138.     same as the above Pascal ones.
  139.    
  140.   OpenDiskFonts will produce a function that you can call, after the 
  141.  diskfont library is open, to load any fonts that are on disk and not 
  142.  in ROM or RAM. If this is not done then any font used but not loaded
  143.  will be replaced by the default font.
  144.  
  145. end
  146. libhelp
  147.                           Open Libraries Help
  148.  
  149.   If the procedure to open libraries is created then the libraries to 
  150.  open, the earliest version acceptable and whether to fail whole program 
  151.  if unopenable is set in the choose libraries window, in the code window.
  152.  Whether to produce these functions is set in the code window. The 
  153.  functions created would be
  154.          
  155.          Pascal :         Function OpenLibs:boolean;
  156.                           Procedure CloseLibs;
  157.          
  158.          C      :         int OpenLibs(void);
  159.                           void CloseLibs(void);
  160.   
  161.   Open Libs will return False if unable to open a library and told to fail
  162.  if that library unopened. If the procedure fails then all libraries will 
  163.  be closed, if it does not abort on fail you should check the library you 
  164.  want is open before use.
  165.   CloseLibs must not be called before OpenLibs, any special code like 
  166.  opening asl or arp but not both must be written by you.
  167.   Default values are set that open those libraries required by the code 
  168.  produced by the Designer, even if you open libraries yourself you must 
  169.  open these libraries :
  170.                          Intuition  V37
  171.                          Graphics   V37
  172.                          GadTools   V37
  173.                          DiskFont   V36
  174.  
  175.   Your program should have a bit like this if you use these functions:
  176.    
  177.   Pascal  :   If OpenLibs then
  178.                 Begin
  179.                   
  180.                   { rest of program }
  181.                   
  182.                   CloseLibs;
  183.                 End
  184.                else
  185.                 writeln('Cannot open all libraries.');
  186.                
  187.   C       :   If ( OpenLibs()==0 )
  188.                   {
  189.                   /*
  190.                   Continue program
  191.                   */
  192.                   CloseLibs();
  193.                   }
  194.               else
  195.                   {
  196.                   /*
  197.                   OpenLibs Failed
  198.                   */
  199.                   }
  200.  
  201. end
  202. windowedithelp
  203.                             Edit Window Help
  204.  
  205.   This is the main part of the program. Here you can design the windows
  206.  that will be produced for you.
  207.  
  208.   The following operate on the selected or all selected Gadgets in the 
  209.  window at that time. To select a gadget you should just activate it by
  210.  clicking on it in a way to send a message. Multiple selects are done
  211.  by holding down a Shift key when selecting. Clicking on a blank bit of
  212.  the window while holding down shift will create a box which will select
  213.  all gadgets inside the box, if it is not cancelled with the right button.
  214.  
  215.  Gadgets  :
  216.            Size   : Allows you to change size of selected Gadget.
  217.            Clone  : Allows you to copy and place current selected gadgets.
  218.            Delete : Deletes selected gadgets.
  219.            Move   : Moves all selected gadgets.
  220.            Align  : Allows you to align all selected Gadgets to a given
  221.                     line and side.
  222.            Spread : Space all selected gadgets out in given direction with
  223.                     given space in between them.
  224.  
  225.  Graphics :
  226.            Bevel  : Create and edit bevel boxes on the window.
  227.            Text   : Create and edit text on the window.
  228.            Image  : Place imported images on the window.
  229.  
  230.  Options  :
  231.            Screen  : Edit edit screen mode.
  232.            Tags    : Edit window tags.
  233.            Code    : Edit window created code options.
  234.            Sizes   : Edit window sizes.
  235.            IDCMP   : Edit IDCMP message types received by program.
  236.            Help    : This help text.
  237.   
  238.  Gadget Information :
  239.    
  240.     Most of the GadTools gadgets can be modified in some way during their
  241.    life. The type of modifications that can be done and how to read
  242.    information from these gadgets is detailed below.
  243.    
  244.    Notes :
  245.      Setting a Palette gadget depth to 0 will mean code will be produced 
  246.     that sets the depth to the screen depth, it will also mean a variable
  247.     <WinLabel>Depth will contain this depth (not the number of colours).
  248.      
  249.    Tags that can be modified :
  250.     
  251.      Button      : GA_Disabled     (BOOL)
  252.      string      : GTST_String     (STRPTR)
  253.                    GA_Disabled     (BOOL)
  254.      Integer     : GTIN_Number     (ULONG)
  255.                    GA_Disabled     (BOOL)
  256.      CheckBox    : GTCB_Checked    (BOOL)
  257.                    GA_Disabled     (BOOL)
  258.      MX          : GTMX_Active     (UWORD)
  259.      Cycle       : GTCY_Labels     (STRPTR *) (Set only V37 up)
  260.                    GTCY_Active     (UWORD)
  261.                    GA_Disabled     (BOOL)
  262.      Slider      : GTSL_Min        (WORD)
  263.                    GTSL_Max        (WORD)
  264.                    GTSL_Level      (WORD)
  265.                    GA_Disabled     (BOOL)
  266.      Scroller    : GTSC_Top        (WORD)
  267.                    GTSC_Total      (WORD)
  268.                    GTSC_Visible    (WORD)
  269.                    GA_Disabled     (BOOL)
  270.      ListView    : GTLV_Labels     (struct List *)
  271.                    GTLV_Top        (UWORD)
  272.                    GTLV_Selected   (UWORD)
  273.      Palette     : GTPA_Color      (UBYTE)
  274.                    GA_Disabled     (BOOL)
  275.   
  276.     The procedure GT_SetSingleGagdetAttr is supplied in any produced 
  277.    pascal source so that you can easily change these values with only one 
  278.    call.
  279.   
  280.    Reading Information :
  281.      Button      : IDCMP_GADGETUP received when pressed.
  282.      String      : If STRINGA_ExitHelp then IDCMP_GADGETUP with
  283.                    code=0x5F received.
  284.                    If tab pressed IDCMP_GADGETUP with code=0x09 received.
  285.                    If Return pressed IDCMP_GADGETUP with code=0 received.
  286.                    Use GetStringFromGad( pGadget ):String to get text in
  287.                    pascal.
  288.      Integer     : If STRINGA_ExitHelp then IDCMP_GADGETUP with
  289.                    code=0x5F received.
  290.                    If tab pressed IDCMP_GADGETUP with code=0x09 received.
  291.                    If Return pressed IDCMP_GADGETUP with code=0 received.
  292.                    Use GetInetgerFromGad( pGadget ):Long to get Integer
  293.                    in pascal
  294.      CheckBox    : IDCMP_GADGETUP received when state changed, use
  295.                    CheckedBox( pGadget ):Boolean to read state in pascal.
  296.      MX          : IDCMP_GADGETDOWN received when pressed with active
  297.                    number in code field of intuimessage.
  298.      Cycle       : IDCMP_GADGETUP received when pressed with active
  299.                    number in code field of intuimessage.
  300.      Slider      : If GA_Immediate then IDCMP_GADGETDOWN with position
  301.                    in code field.
  302.                    If GA_RelVerify then IDCMP_GADGETUP with position
  303.                    in code field.
  304.      Scroller    : If GA_Immediate then IDCMP_GADGETDOWN with position
  305.                    in code field.
  306.                    If GA_RelVerify then IDCMP_GADGETUP with position
  307.                    in code field.
  308.      ListView    : IDCMP_GADGETUP messages will be received with code
  309.                    containing item selected.
  310.      Palette     : IDCMP_GADGETUP messages will be received with code
  311.                    containing colour selected.
  312.  
  313.    Boolean Gadgets :
  314.      These are constructed on top of the GadTools Generic class, boolean
  315.     gadgets are those used in buttons, toggle switches, mutual excludes
  316.     and so on. The inclusion of this type is meant to allow the use of
  317.     some gadgets with definable imagery. You can choose the placing and
  318.     type of text with much more precision, select the activation methods,
  319.     the highlighting method and images to use in the different state and
  320.     the initial state. Experimentation will show what can be done.
  321.      OnGadget and OffGadget should be used to enable/disable and the
  322.     messages received will be IDCMP_GADGETUP and IDCMP_GADGETDOWN if
  323.     you select IMMEDIATE and RELVERIFY respectively. The toggle gadgets in
  324.     the Tools window are of this type and GetFile gadgets can be made
  325.     using this type.
  326.      You should still use graphics that look like the other types. The
  327.     style of gadgets should be kept. To make the gadgets work properly
  328.     you should set their size to be the same as the images used.
  329.     
  330. end
  331. windowcodehelp
  332.                        Help on Window code options
  333.  
  334.   These options change the kind of procedures produced to open and close 
  335.  windows.
  336.   You should really check if the window is open unless it is only called 
  337.  once, then this would be wasted code. 
  338.   Opening only if can create gadgets is also a good idea. 
  339.  Having more than one gadget font can make windows look over-complicated 
  340.  and creates larger programs, but is sometimes required.
  341.   Return boolean can allow a program to fail if the window is unopenable,
  342.  this only applys to pascal because you can ignor the return in C.
  343.   A custom message port can be supplied and the window will be closed 
  344.  safely.
  345.   Calculating border sizes allows for different height of title bars, not 
  346.  doing so fixes them at the edited size.
  347.   Producing a pgadget array allows referencing the gadgets by your code 
  348.  and is usually necessary.
  349.   Attaching a menu created is easily done and options allow definition of
  350.  the code produced.
  351.   Commenting code allows you to read over the unit and see what is 
  352.  happening, commenting is done if the Main Code options Comment is set.
  353.   WorkBench AppWindows allow icons to be dragged onto your window, if it
  354.  is on the Workbench screen. It requires a seperate message port which is
  355.  supplied as a parameter to the openwindow procedure, also supplied to
  356.  the openwindow function is a long for the appwin id.
  357.   The gadget list window, which can be opened from here, or automatically
  358.  via preferences, allows you to change the order of the gadgets. This
  359.  changes their gadget IDs the first gadget ID is also set here, usually 0.
  360.  This window can also be used to edit gadgets which cannot be activated,
  361.  ie if you put them behind another accidently or an error occurs and they
  362.  cannot be created. High acts in the same way as clicking ont the window
  363.  does, ie Shift High does not unhighlight other gadgets.
  364.  
  365.  Note:
  366.   If you wish to open more than one copy of a window then all you have to
  367.  do is set the window label to pw^.win in Pascal or w->win in C. This will
  368.  result in the window, the gadgets, the glist and the visualinfo being
  369.  inside a structure, so you can pass a pointer to the structure to open
  370.  the window and a different pointer for a different copy. To do this you
  371.  will have to delete the variables initiations in the produced file but
  372.  it is not too difficult.
  373.  
  374. end
  375. windowsizehelp
  376.                            Window Sizes Help
  377.  
  378.   Allows you to directly edit the window size, zoom size and the maximum
  379.  and minimum sizes. All changes will be made to the window when OK or 
  380.  Update are selected but if you move or size the window before updating 
  381.  then your input will be overwritten with the new size. These sizes are 
  382.  the actual ones on screen, including the borders, if border sizes are 
  383.  calculated then the window size will be modified suitably. If InnerWidth 
  384.  and InnerHeight are not set to 0 they will be used instead of width and 
  385.  height. It would probably be sensible to use InnerW and InnerH all the 
  386.  time, this along with calculating border sizes will produce windows as 
  387.  good as a gimmezz, as far as sizeing goes. When InnerWidth and 
  388.  InnerHeight ar in use the width and height values are not editable.
  389.  
  390. end
  391. windowidcmphelp
  392.                             Window IDCMP Help
  393.  
  394.   Choose which IDCMP messages will be sent to the window by Intuition. See
  395.  RKM for full documentation. Suitable IDCMP will be added for gadgets as
  396.  used by the window anyway.
  397.  
  398.   IDCMP Flags :
  399.           MOUSEBUTTONS   : Supply info about mouse button presses.
  400.           MOUSEMOVE      : Tell when mouse moves.
  401.           DELTAMOVE      : As above with change of position.
  402.           GADGETDOWN     : Gadget message.
  403.           GADGETUP       : Gadget message.
  404.           CLOSEWINDOW    : CloseWindow gadget pressed.
  405.           MENUPICK       : Menu Item Selected.
  406.           MENUVERIFY     : Is it OK to draw a menu ?
  407.           MENUHELP       : Help key pressed on menu item.
  408.           REQSET         : Requester set on window.
  409.           REQCLEAR       : Requester removed from window.
  410.           NEWSIZE        : Window has been resized.
  411.           REFRESHWINDOW  : Window needs redrawing.
  412.           SIZEVERIFY     : Can window be resized ?
  413.           ACTIVEWINDOW   : Window made active.
  414.           INACTIVEWINDOW : Window deactivated.
  415.           VANILLAKEY     : Vanilla key code passed.
  416.           RAWKEY         : Raw key code passed.
  417.           NEWPREFS       : 1.3 Prefs changed.
  418.           DISKINSERTED   : Floppy disk inserted.
  419.           DISKREMOVED    : Floppy disk removed.
  420.           INTUITICKS     : Timing message.
  421.           IDCMPUPDATE    : Boopsi Message.
  422.           CHANGEWINDOW   : Window Sized or moved.
  423.  
  424. end
  425. tagshelp
  426.                     Help on editing tags for window
  427.  
  428.   The tags specified here define a lot of details for your window. Not all
  429.  will be displayed while editing but they will all be in the code
  430.  generated.
  431.  
  432.  Specific Information
  433.  
  434.     WindowTitle    : Title string for window.
  435.     ScreenTitle    : Title string for screen when window is active.
  436.     WindowLabel    : Label referred to in source.
  437.     CustomScreen   : Allows Custom Screen Pointer to be passed to window
  438.                      opening routine.
  439.     PubScreen      : Similar to above but Public screen.
  440.     PubScreenName  : Pass a pointer to a null terminated string giving
  441.                      name of public screen to open on.
  442.     PubScrFallBack : Fall back to default screen if cannot find public
  443.                      requested.
  444.     MouseQueue     : Mouse message backlog limit.
  445.     RptQueue       : Repeat key backlog limit.
  446.     SizeGadget     : Do you want a sizing gadget ?.
  447.     SizeBRight     : Put Size Gadget in right border.
  448.     SizeBBottom    : Put Size Gadget in bottom border.
  449.     DragBar        : Allows window title bar dragging.
  450.     DepthGadget    : Allows user to change window depth.
  451.     CloseGadget    : Window has a close gadget.
  452.     ReportMouse    : Send mouse movements to window.
  453.     NoCareRefresh  : Do not receive refreshwindow messages, bad idea with
  454.                      gadtools.
  455.     Borderless     : Make window borderless, usually just backdrop windows
  456.                      have this.
  457.     BackDrop       : Window is always at the back, can only have one per
  458.                      screen.
  459.     GimmeZeroZero  : 0,0 of window is below title bar and right of left
  460.                      border.
  461.     Activate       : Activate window on opening.
  462.     RMBTrap        : Trap menu events, do not allow menu selections.
  463.     SimpleRefresh  : No intuition refreshing at all.
  464.     Smartrefresh   : Intuition handles most refreshing.
  465.     Autoadjust     : Move/Size window so that it goes on the screen.
  466.     MenuHelp       : Receive IDCMP_MENHELP when user presses help button
  467.                      on menus.
  468.     Zoom           : Supply zoom gadget array of values.
  469.  
  470.   For full information see manuals.
  471.  
  472. end
  473. textlistwindowhelp
  474.                        Help on text editing window
  475.  
  476.   Editing strings to be placed in the window, it is all pretty self 
  477.  explanatory. All fonts are supported and can be easily selected. The 
  478.  drawmodes are standard as well, just try them if you are not sure what 
  479.  they do. 
  480.   The text gets display at the bottom of the window, Update puts the texts
  481.  on the edit window, if placed. 
  482.   All the texts must be placed before they are drawn. Clicking on the edit
  483.  window in edit text mode allows you to move the currently selected text.
  484.  
  485. end
  486. imagelisthelp
  487.                         Help on images in window
  488.  
  489.   Any image loaded in can be placed on a window. They are removed if the 
  490.  image is deleted. A list of those placed is available, an image can be 
  491.  placed any number of times on a window.
  492.   The exact positioning of an image can be changed by changing the numbers
  493.  on the image choosing window. The image drawing gadget works in the same 
  494.  way as the text drawing gadget, it moves the currently selected image 
  495.  about the window.
  496.                                                        
  497. end
  498. bevelhelp
  499.                       Help on creating Bevel Boxes
  500.  
  501.   These use the GadTools BevelBox procedure to draw 3-D Bevel Boxes on 
  502.  screen. Normal boxes bring out an area to show it can be selected, 
  503.  Recessed boxes show the user it cannot be selected and Double boxes 
  504.  seperate out areas of a window.
  505.   Bevel Boxes cannot be selected on screen so you have to edit them using
  506.  the options in the edit window. Update redraws the edit window so that 
  507.  you see any changes you have made to box types.
  508.  
  509. end
  510. menuhelp
  511.                           Help on editing Menus
  512.                 
  513.   Menus can be created as stand alone to be used as you wish, or they can 
  514.  be attached to windows designed in the program. The layout of the menus 
  515.  is all pretty obvious to an amiga user. Titles are the left column, Items
  516.  in the centre and SubItems to the right.
  517.   The font and colour of the text can be changed easily, and graphic items
  518.  can be used instead of text, the second listview in each column contains
  519.  a list of all the imported images imported.
  520.   There is a problem with these if you try to use an image taller than the
  521.  screen, the machine crashes, or at least, mine does.
  522.   The menu you create can be tested using the Test button, this updates 
  523.  the menu attached to the menu edit window. This is not necessary if the
  524.  Autotest option is set in prefs. The option to turn autotesting off
  525.  exists because it can slow down menu creation quite a lot.
  526.   There must be at least one Title on each menu, the number of Titles, 
  527.  Items and SubItems is limited only by intuition.
  528.   Mutual exclusion is possible for items and subitems. The items/subitems 
  529.  you wish to exclude from the selected item/subitem should be checked on 
  530.  the menu. You should 'Test' the menu before doing this if it is not 'auto
  531.  tested' to make sure it is up to date. Failure to do this might cause 
  532.  problems reading the menus. I recommend you set the menutoggle bits of 
  533.  all items to be excluded while excluding them to make the job easier, 
  534.  turning then off afterwards to get the required menu actions. You must
  535.  test the menu for this to take effect, it does not work otherwise. If
  536.  it autotests then it is impossible to set up most situations.
  537.   If the code option IDCMP Handlers is set then a procedure will be
  538.  produced for each menu which is the framework for processing input for
  539.  the menu. You should copy these procedures into your own program and edit
  540.  them so they carry out the required actions. If you want MENUHELP then
  541.  copying this procedure twice will enable response to those messages also.
  542.  
  543. end
  544. imagehelp
  545.                          Help on editing Images
  546.   
  547.   Any non-Ham IFF image can be imported into the Designer and the code
  548.  produced will contain an Image structure which can be used as desired by
  549.  you. Most of the fields in this image structure are defined by the image
  550.  itself but you can chenge the PlanePick and PlaneOnOff fields.
  551.   The PlanePick field specifies which bitplanes the image is drawn in.
  552.  For each bitplane in the image there must be a corresponding destination
  553.  bitplane in PlanePick. The designer will ensure that the PlanePick value
  554.  is always legal.
  555.   The PlaneOnOff field just selects ehether the planes not written to by
  556.  the image are set or cleared. Default is all cleared.
  557.   Use the view button to update the display so you can see what the image
  558.  looks like.
  559.   To move the images into chip ram this is necessary :
  560.    
  561.   Pascal  :   If MakeImages then
  562.                 Begin
  563.                   
  564.                   { rest of program }
  565.                   
  566.                   FreeImages;
  567.                 End
  568.                else
  569.                 writeln('Cannot make images.');
  570.                
  571.   C       :  It is only necessary to call this function if your compiler
  572.             does not support __chip. Set the option in main code to
  573.             choose whether __chip is used or these functions are produced.
  574.   
  575.               If ( MakeImages()==0 )
  576.                   {
  577.                   /*
  578.                   Continue program
  579.                   */
  580.                   FreeImages();
  581.                   }
  582.               else
  583.                   {
  584.                   /*
  585.                   MakeImages Failed
  586.                   */
  587.                   }
  588.   
  589.   Colour maps are created in the produced files and can be used when an 
  590.  image display window is opened, set whether they are or not in prefs.
  591.  The maps are oly produced if the images imported have a colour map, it
  592.  is not required for success. At the moment only 4096 colours are
  593.  supported, 24 bit palettes are converted down to 12 bit internally.
  594.  LoadRGB4 is used to set these to a viewport. To set a colourmap to a 
  595.  screen use :
  596.     Pascal     : LoadRGB4( @pscr^.viewport, pword(colours), numcolours);
  597.     C          : LoadRGB4( &Scr->ViewPort, (UWORD *)colours, numcolours);
  598.   If you wish to edit a window with an imported palette then the only way
  599.  to do this is at the moment is to open an image view window on the edit
  600.  screen.
  601.  
  602. end
  603. END
  604.  Error In Help Data.
  605.  Error In Help Data.
  606.  Error In Help Data.
  607.  Error In Help Data.
  608. end
  609. ENDFILE