home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 13 / AACD13.ISO / AACD / Programming / MR_Classes / Dev / Source / tcpalette / GetAttr.c < prev    next >
Encoding:
C/C++ Source or Header  |  2000-07-15  |  2.1 KB  |  107 lines

  1. #define DEBUG
  2. #include <debug.h>
  3.  
  4. #include "private.h"
  5. #include "protos.h"
  6.  
  7. ULONG Expand(ULONG Value, ULONG Precision);
  8.  
  9. ULONG __saveds gad_GetAttr(Class *C, struct Gadget *Gad, struct opGet *Get)
  10. {
  11.   ULONG retval=1;
  12.   struct GadData *gdata;
  13.   ULONG *data;
  14.  
  15.   gdata=INST_DATA(C, Gad);
  16.  
  17. //  DKP("SetAttrs()\n");
  18.   
  19.   data=Get->opg_Storage;
  20.   
  21.   switch(Get->opg_AttrID)
  22.   {
  23.     case TCPALETTE_SelectedColor:
  24.       *data=(ULONG)gdata->ActivePen;
  25.       break;
  26.       
  27.     case TCPALETTE_RGBPalette:
  28.       {
  29.         ULONG l;
  30.         struct TCPaletteRGB *rgb;
  31.         
  32.         rgb=(APTR)data;
  33.         
  34.         for(l=0;l<gdata->Pens;l++)
  35.         {
  36.           rgb[l]=gdata->Palette[l];
  37.         }
  38.       }
  39.       break;
  40.       
  41.      case TCPALETTE_LRGBPalette:
  42.       {
  43.         ULONG l;
  44.         
  45.         for(l=0;l<gdata->Pens;l++)
  46.         {
  47.           data[l]=PACKRGB(gdata->Palette[l]);
  48.         }
  49.       }
  50.       break;
  51.       
  52.     case TCPALETTE_SelectedRGB:
  53.       {  
  54.         struct TCPaletteRGB *rgb;
  55.         
  56.         rgb=(APTR)data;
  57.         
  58.         *rgb=gdata->Palette[gdata->ActivePen];
  59.       }
  60.       break;
  61.       
  62.     case TCPALETTE_SelectedLRGB:
  63.       { 
  64.         data[0]=PACKRGB(gdata->Palette[gdata->ActivePen]);
  65.       }
  66.       break;
  67.       
  68.      case TCPALETTE_NumColors:
  69.       *data=gdata->Pens;
  70.       break;
  71.       
  72.     case TCPALETTE_ShowSelected:
  73.       *data=gdata->ShowSelected;
  74.       break;
  75.       
  76.     case TCPALETTE_SelectedRed:
  77.       *data=gdata->Palette[gdata->ActivePen].R>>(32-gdata->Precision);
  78.       break;
  79.       
  80.     case TCPALETTE_SelectedGreen:
  81.       *data=gdata->Palette[gdata->ActivePen].G>>(32-gdata->Precision);
  82.       break;        
  83.  
  84.     case TCPALETTE_SelectedBlue:
  85.       *data=gdata->Palette[gdata->ActivePen].B>>(32-gdata->Precision);
  86.       break;
  87.       
  88.     case TCPALETTE_Precision:
  89.       *data=gdata->Precision;
  90.       break;
  91.  
  92.     case TCPALETTE_Orientation:
  93.       *data=gdata->Orientation;
  94.       break;
  95.       
  96.     case TCPALETTE_NoUndo:
  97.       *data=(gdata->UndoLength?0:1); // returns 0 if there is undo
  98.       break;
  99.       
  100.     default:
  101.       retval=DoSuperMethodA(C, (APTR)Gad, (APTR)Get);
  102.   }
  103.  
  104.   return(retval);
  105. }
  106.  
  107.