home *** CD-ROM | disk | FTP | other *** search
/ Fish 'n' More 2 / fishmore-publicdomainlibraryvol.ii1991xetec.iso / disks / disk373.lzh / Multiplot / source / mplot_src / src.zoo / color.h < prev    next >
C/C++ Source or Header  |  1990-08-02  |  14KB  |  492 lines

  1.  
  2. /* *** color.h **************************************************************
  3.  *
  4.  * ColorWindow Routine  --  Include File
  5.  *     from Book 1 of the Amiga Programmers' Suite by RJ Mical
  6.  *
  7.  * Copyright (C) 1986, 1987, Robert J. Mical
  8.  * All Rights Reserved.
  9.  *
  10.  * Created for Amiga developers.
  11.  * Any or all of this code can be used in any program as long as this
  12.  * entire copyright notice is retained, ok?  Thanks.
  13.  *
  14.  * The Amiga Programmer's Suite Book 1 is copyrighted but freely distributable.
  15.  * All copyright notices and all file headers must be retained intact.
  16.  * The Amiga Programmer's Suite Book 1 may be compiled and assembled, and the
  17.  * resultant object code may be included in any software product.  However, no
  18.  * portion of the source listings or documentation of the Amiga Programmer's
  19.  * Suite Book 1 may be distributed or sold for profit or in a for-profit
  20.  * product without the written authorization of the author, RJ Mical.
  21.  *
  22.  * HISTORY      NAME            DESCRIPTION
  23.  * -----------  --------------  --------------------------------------------
  24.  * 20 Oct 87    - RJ            Make the window draggable
  25.  * 3 Jan 87     RJ >:-{)*       Clean-up for release
  26.  * 27 Feb 86    =RJ Mical=      Modified these routines for Zaphod
  27.  * January 86   =RJ=            Modified the originals for Mandelbrot
  28.  * Late 85      =RJ=            Created the color window for Graphicraft
  29.  *
  30.  * *********************************************************************** */
  31.  
  32.  
  33.  
  34. #include "prosuite.h"
  35.  
  36.  
  37.  
  38. /* === The definitions for ColorWindow =================================*/
  39. #define COLOR_LEFT              0
  40. #define COLOR_TOP               9
  41.  
  42. #define COLOR_KNOB_BODY         0x1000
  43.  
  44. /* Extra width to make room for numeric readout */
  45. #define NEW_EXTRALEFT           24
  46.  
  47. #define COLORWINDOW_WIDTH       (208 + NEW_EXTRALEFT + COLOR_LEFT)
  48. #define COLORWINDOW_HEIGHT      (91 + COLOR_TOP)
  49.  
  50. #define CHARACTER_WIDTH         8
  51. #define CHARACTER_HEIGHT        8
  52.  
  53. #define COLOR_BOX_LEFT          (COLOR_LEFT + 7)
  54. #define COLOR_BOX_TOP           (COLOR_TOP + 6)
  55. #define COLOR_BOX_RIGHT         (COLOR_BOX_LEFT + 15)
  56. #define COLOR_BOX_BOTTOM        (COLOR_BOX_TOP + 29)
  57. #define COLOR_COLOR_TOP         (COLOR_TOP + 45)
  58. #define COLOR_PROP_LEFT         (COLOR_LEFT + 41)
  59. #define COLOR_PROP_TOP          (COLOR_TOP + 4)
  60. #define COLOR_PROP_WIDTH        165
  61. #define COLOR_PROP_HEIGHT       10
  62. #define COLOR_CLUSTER_LEFT      (COLOR_LEFT + 144)
  63. #define COLOR_CLUSTER_TOP       (COLOR_TOP + 41)
  64. #define COLOR_CLUSTER_WIDTH     (CHARACTER_WIDTH * 6 + 10 + NEW_EXTRALEFT)
  65. #define COLOR_CLUSTER_HEIGHT    9
  66. #define COLOR_HSL_TOP           COLOR_PROP_TOP
  67. #define COLOR_HSL_LEFT          (COLOR_PROP_LEFT - 14)
  68.  
  69. #define COLOR_VALUE_X           (COLOR_PROP_LEFT + COLOR_PROP_WIDTH + 4)
  70. #define COLOR_VALUE_REDY        (COLOR_PROP_TOP + 1 + 6)
  71. #define COLOR_VALUE_GREENY      (COLOR_VALUE_REDY + COLOR_PROP_HEIGHT + 1)
  72. #define COLOR_VALUE_BLUEY       (COLOR_VALUE_GREENY + COLOR_PROP_HEIGHT + 1)
  73.  
  74. /* GREEN and RED are out of order to facilitate the color cycle window sharing
  75.  * these gadgets with the color palette window (color cycle uses the gadgets
  76.  * only down to the COLOR_GREEN gadget)
  77.  * (And that's why, in case you have always been wondering.  Now the
  78.  * next mystery is:  why didn't I explain this before?)
  79.  */
  80. #define COLOR_COPY              0
  81. #define COLOR_RANGE             1
  82. #define COLOR_OK                2
  83. #define COLOR_CANCEL            3
  84. #define COLOR_GREEN             4
  85. #define COLOR_RED               5
  86. #define COLOR_BLUE              6
  87. #define COLOR_HSL_RGB           7
  88. #define COLOR_GADGETS_COUNT     8
  89.  
  90. #define RGBHSL_SIZE     29              /* Number of words per image */
  91.  
  92.  
  93. /* *** colordat.c ***********************************************************
  94.  *
  95.  * ColorWindow Routine  --  The ColorWindow Data
  96.  *     from Book 1 of the Amiga Programmers' Suite by RJ Mical
  97.  *
  98.  * Copyright (C) 1986, 1987, Robert J. Mical
  99.  * All Rights Reserved.
  100.  *
  101.  * Created for Amiga developers.
  102.  * Any or all of this code can be used in any program as long as this
  103.  * entire copyright notice is retained, ok?  Thanks.
  104.  *
  105.  * The Amiga Programmer's Suite Book 1 is copyrighted but freely distributable.
  106.  * All copyright notices and all file headers must be retained intact.
  107.  * The Amiga Programmer's Suite Book 1 may be compiled and assembled, and the
  108.  * resultant object code may be included in any software product.  However, no
  109.  * portion of the source listings or documentation of the Amiga Programmer's
  110.  * Suite Book 1 may be distributed or sold for profit or in a for-profit
  111.  * product without the written authorization of the author, RJ Mical.
  112.  *
  113.  * HISTORY      NAME            DESCRIPTION
  114.  * -----------  --------------  --------------------------------------------
  115.  * 20 Oct 87    - RJ            Make the window draggable
  116.  * 3 Jan 87     RJ >:-{)*       Clean-up for release
  117.  * 27 Feb 86    =RJ Mical=      Modified these routines for Zaphod
  118.  * January 86   =RJ=            Modified the originals for Mandelbrot
  119.  * Late 85      =RJ=            Created the color window for Graphicraft
  120.  *
  121.  * *********************************************************************** */
  122.  
  123.  
  124. struct TextAttr SafeFont =
  125.                 {
  126.                 (UBYTE *)"topaz.font",
  127.                 TOPAZ_EIGHTY,
  128.                 0,
  129.                 FS_NORMAL
  130.                 };
  131.  
  132.  
  133. /* If this image data isn't in chip memory, it will have to be moved there */
  134. USHORT chip RGBData[RGBHSL_SIZE] =
  135.         {
  136.         0xFC00,
  137.         0x6600,
  138.         0x6600,
  139.         0x7800,
  140.         0x6C00,
  141.         0x6600,
  142.         0xE300,
  143.         0x0000,
  144.         0x0000,
  145.         0x0000,
  146.         0x0000,
  147.         0x3C00,
  148.         0x6600,
  149.         0xC000,
  150.         0xCE00,
  151.         0xC600,
  152.         0x6600,
  153.         0x3E00,
  154.         0x0000,
  155.         0x0000,
  156.         0x0000,
  157.         0x0000,
  158.         0xFC00,
  159.         0x6600,
  160.         0x6600,
  161.         0x7C00,
  162.         0x6600,
  163.         0x6600,
  164.         0xFC00,
  165.         };
  166.  
  167. USHORT chip HSLData[RGBHSL_SIZE] =
  168.         {
  169.         0xC600,
  170.         0xC600,
  171.         0xC600,
  172.         0xFE00,
  173.         0xC600,
  174.         0xC600,
  175.         0xC600,
  176.         0x0000,
  177.         0x0000,
  178.         0x0000,
  179.         0x0000,
  180.         0x7C00,
  181.         0xC600,
  182.         0xC000,
  183.         0xFE00,
  184.         0x0600,
  185.         0xC600,
  186.         0x7C00,
  187.         0x0000,
  188.         0x0000,
  189.         0x0000,
  190.         0x0000,
  191.         0xF000,
  192.         0x6000,
  193.         0x6000,
  194.         0x6000,
  195.         0x6200,
  196.         0x6200,
  197.         0xFE00,
  198.         };
  199.  
  200.  
  201.  
  202. struct Image ColorRGBImage =
  203.         {
  204.         3, 1,
  205.         8,
  206.         29,
  207.         1,
  208.         &RGBData[0],
  209.         0x1, 0x0,
  210.         NULL,
  211.         };
  212.  
  213.  
  214. struct Image ColorHSLImage =
  215.         {
  216.         3, 1,
  217.         8,
  218.         29,
  219.         1,
  220.         &HSLData[0],
  221.         0x1, 0x0,
  222.         NULL,
  223.         };
  224.  
  225.  
  226. SHORT ClusterBorderVectors[] =
  227.         {
  228.         -1, -1,
  229.         -1, COLOR_CLUSTER_HEIGHT,
  230.         COLOR_CLUSTER_WIDTH, COLOR_CLUSTER_HEIGHT,
  231.         COLOR_CLUSTER_WIDTH, -1,
  232.         -1, -1,
  233.         };
  234.  
  235.  
  236. struct Border ColorClusterBorder =
  237.         {
  238.         0, 0,
  239.         1, 0,
  240.         JAM1,
  241.         5,
  242.         &ClusterBorderVectors[0],
  243.         NULL,
  244.         };
  245.  
  246. struct IntuiText ColorClusterText[4] =
  247.         {
  248.         /* "COPY" */
  249.                 {
  250.                 1, 0,
  251.                 JAM2,
  252.                 5 + CHARACTER_WIDTH + (NEW_EXTRALEFT >> 1), 1,
  253.                 &SafeFont,
  254.                 (UBYTE *)"COPY",
  255.                 NULL,
  256.                 },
  257.  
  258.         /* "RANGE" */
  259.                 {
  260.                 1, 0,
  261.                 JAM2,
  262.                 5 + (CHARACTER_WIDTH >> 1) + (NEW_EXTRALEFT >> 1), 1,
  263.                 &SafeFont,
  264.                 (UBYTE *)"RANGE",
  265.                 NULL,
  266.                 },
  267.  
  268.         /* "OK" */
  269.                 {
  270.                 1, 0,
  271.                 JAM2,
  272.                 5 + (CHARACTER_WIDTH << 1) + (NEW_EXTRALEFT >> 1), 1,
  273.                 &SafeFont,
  274.                 (UBYTE *)"OK",
  275.                 NULL,
  276.                 },
  277.  
  278.         /* "CANCEL" */
  279.                 {
  280.                 1, 0,
  281.                 JAM2,
  282.                 5 + (NEW_EXTRALEFT >> 1), 1,
  283.                 &SafeFont,
  284.                 (UBYTE *)"CANCEL",
  285.                 NULL,
  286.                 },
  287.  
  288.         };
  289.  
  290.  
  291.  
  292. /* ======================================================================== */
  293. /* ======================================================================== */
  294. /* ======================================================================== */
  295.  
  296. struct Image ColorPropsImages[3];
  297.  
  298.  
  299. struct PropInfo ColorPropsInfos[3] =
  300.         {
  301.                 {
  302.                 /* COLOR_GREEN */
  303.                 AUTOKNOB | FREEHORIZ,
  304.                 0,
  305.                 0,
  306.                 COLOR_KNOB_BODY,
  307.                 0,
  308.                 0, 0, 0, 0, 0, 0,
  309.                 },
  310.  
  311.                 {
  312.                 /* COLOR_RED */
  313.                 AUTOKNOB | FREEHORIZ,
  314.                 0,
  315.                 0,
  316.                 COLOR_KNOB_BODY,
  317.                 0,
  318.                 0, 0, 0, 0, 0, 0,
  319.                 },
  320.  
  321.                 {
  322.                 /* COLOR_BLUE */
  323.                 AUTOKNOB | FREEHORIZ,
  324.                 0,
  325.                 0,
  326.                 COLOR_KNOB_BODY,
  327.                 0,
  328.                 0, 0, 0, 0, 0, 0,
  329.                 },
  330.  
  331.         };
  332.  
  333.  
  334. struct Gadget ColorTemplateGadgets[COLOR_GADGETS_COUNT] =
  335.         {
  336.                 {
  337.                 /* COLOR_COPY */
  338.                 NULL,
  339.                 COLOR_CLUSTER_LEFT,
  340.                 COLOR_CLUSTER_TOP + (00 * (COLOR_CLUSTER_HEIGHT + 3)),
  341.                 COLOR_CLUSTER_WIDTH,
  342.                 COLOR_CLUSTER_HEIGHT,
  343.                 GADGHCOMP,
  344.                 RELVERIFY,
  345.                 BOOLGADGET,
  346.                 (APTR)&ColorClusterBorder,
  347.                 NULL,
  348.                 &ColorClusterText[00],
  349.                 NULL,
  350.                 NULL,
  351.                 COLOR_COPY,
  352.                 NULL,
  353.                 },
  354.  
  355.                 {
  356.                 /* COLOR_RANGE */
  357.                 &ColorTemplateGadgets[COLOR_COPY],
  358.                 COLOR_CLUSTER_LEFT,
  359.                 COLOR_CLUSTER_TOP + (01 * (COLOR_CLUSTER_HEIGHT + 3)),
  360.                 COLOR_CLUSTER_WIDTH,
  361.                 COLOR_CLUSTER_HEIGHT,
  362.                 GADGHCOMP,
  363.                 RELVERIFY,
  364.                 BOOLGADGET,
  365.                 (APTR)&ColorClusterBorder,
  366.                 NULL,
  367.                 &ColorClusterText[01],
  368.                 NULL,
  369.                 NULL,
  370.                 COLOR_RANGE,
  371.                 NULL,
  372.                 },
  373.  
  374.                 {
  375.                 /* COLOR_OK */
  376.                 &ColorTemplateGadgets[COLOR_RANGE],
  377.                 COLOR_CLUSTER_LEFT,
  378.                 COLOR_CLUSTER_TOP + (02 * (COLOR_CLUSTER_HEIGHT + 3)),
  379.                 COLOR_CLUSTER_WIDTH,
  380.                 COLOR_CLUSTER_HEIGHT,
  381.                 GADGHCOMP,
  382.                 RELVERIFY,
  383.                 BOOLGADGET,
  384.                 (APTR)&ColorClusterBorder,
  385.                 NULL,
  386.                 &ColorClusterText[02],
  387.                 NULL,
  388.                 NULL,
  389.                 COLOR_OK,
  390.                 NULL,
  391.                 },
  392.  
  393.                 {
  394.                 /* COLOR_CANCEL */
  395.                 &ColorTemplateGadgets[COLOR_OK],
  396.                 COLOR_CLUSTER_LEFT,
  397.                 COLOR_CLUSTER_TOP + (03 * (COLOR_CLUSTER_HEIGHT + 3)),
  398.                 COLOR_CLUSTER_WIDTH,
  399.                 COLOR_CLUSTER_HEIGHT,
  400.                 GADGHCOMP,
  401.                 RELVERIFY,
  402.                 BOOLGADGET,
  403.                 (APTR)&ColorClusterBorder,
  404.                 NULL,
  405.                 &ColorClusterText[03],
  406.                 NULL,
  407.                 NULL,
  408.                 COLOR_CANCEL,
  409.                 NULL,
  410.                 },
  411.  
  412.                 {
  413.                 /* COLOR_GREEN */
  414.                 &ColorTemplateGadgets[COLOR_CANCEL],
  415.                 COLOR_PROP_LEFT,
  416.                 COLOR_PROP_TOP + (01 * (COLOR_PROP_HEIGHT + 1)),
  417.                 COLOR_PROP_WIDTH,
  418.                 COLOR_PROP_HEIGHT,
  419.                 GADGHCOMP | GADGIMAGE,
  420.                 FOLLOWMOUSE,
  421.                 PROPGADGET,
  422.                 (APTR)&ColorPropsImages[01],
  423.                 NULL,
  424.                 NULL,
  425.                 NULL,
  426.                 (APTR)&ColorPropsInfos[01],
  427.                 COLOR_GREEN,
  428.                 NULL,
  429.                 },
  430.  
  431.                 {
  432.                 /* COLOR_RED */
  433.                 &ColorTemplateGadgets[COLOR_GREEN],
  434.                 COLOR_PROP_LEFT,
  435.                 COLOR_PROP_TOP + (00 * (COLOR_PROP_HEIGHT + 1)),
  436.                 COLOR_PROP_WIDTH,
  437.                 COLOR_PROP_HEIGHT,
  438.                 GADGHCOMP | GADGIMAGE,
  439.                 FOLLOWMOUSE,
  440.                 PROPGADGET,
  441.                 (APTR)&ColorPropsImages[00],
  442.                 NULL,
  443.                 NULL,
  444.                 NULL,
  445.                 (APTR)&ColorPropsInfos[00],
  446.                 COLOR_RED,
  447.                 NULL,
  448.                 },
  449.  
  450.                 {
  451.                 /* COLOR_BLUE */
  452.                 &ColorTemplateGadgets[COLOR_RED],
  453.                 COLOR_PROP_LEFT,
  454.                 COLOR_PROP_TOP + (02 * (COLOR_PROP_HEIGHT + 1)),
  455.                 COLOR_PROP_WIDTH,
  456.                 COLOR_PROP_HEIGHT,
  457.                 GADGHCOMP | GADGIMAGE,
  458.                 FOLLOWMOUSE,
  459.                 PROPGADGET,
  460.                 (APTR)&ColorPropsImages[02],
  461.                 NULL,
  462.                 NULL,
  463.                 NULL,
  464.                 (APTR)&ColorPropsInfos[02],
  465.                 COLOR_BLUE,
  466.                 NULL,
  467.                 },
  468.  
  469.                 {
  470.                 /* COLOR_HSL_RGB */
  471.                 &ColorTemplateGadgets[COLOR_BLUE],
  472.                 COLOR_HSL_LEFT,
  473.                 COLOR_HSL_TOP,
  474.                 CHARACTER_WIDTH + 5,
  475.                 COLOR_BOX_BOTTOM - COLOR_BOX_TOP + 1,
  476.                 GADGHIMAGE | GADGIMAGE,
  477.                 TOGGLESELECT | GADGIMMEDIATE,
  478.                 BOOLGADGET,
  479.                 (APTR)&ColorRGBImage,
  480.                 (APTR)&ColorHSLImage,
  481.                 NULL,
  482.                 NULL,
  483.                 NULL,
  484.                 COLOR_HSL_RGB,
  485.                 NULL,
  486.                 },
  487.         };
  488.  
  489.  
  490.  
  491.  
  492.