[comp.sys.mac] Free Color Menu MDEF procedure

rheintz@zaphod.ncsa.uiuc.edu (04/13/89)

This resource file contains an MDEF (menu definition procedure) 
and a MENU both with ID's of 550.  The Color menu allows the user to
select any color from the current color table.  This MDEF is used in
the NCSA Layout 1.1 program and is public domain.

To use the Color menu, copy the MDEF and MENU resources as you normally
would (like using a resource editor).  If you already use ID number 550
as a MENU, just change the MENU ID.  If you already use ID number 550 for
an MDEF you must change the MENU resource (page Inside Mac I-364) as well
as changing the MDEF ID.

There are no special requirements for initializing the color menu.  It can
be added to the Menu bar or as a sub menu just like any other menu as
described in Inside Macintosh.  For example, to add the menu call

colorMenu: MenuHandle;

colorMenu = GetMenu(550);
InsertMenu(colorMenu, 0);

If you use the MBAR resource, just add 550 ID to it.  I tried this with 
PixelPaint and it worked just fine.

The interface to the color menu is through the standard macintosh calls.
The color menu returns a number from 1 to 256 corresponding to the color
table index of 0 to 255.  In otherwords, subtract 1 from the return value
of the color menu (itemNo) to get the index into the color table.  If you
want the RGB value, just call

theColor: RGBColor;

Index2Color(itemNo-1, &theColor);

There are two modes to the color menu.  The default mode is the easiest
and has already been described.  This is the mode that the colorbar is
initialized to.  In this mode, When the color menu is first selected,
the current selected color and index number at the bottom of the color
menu are blank.

The second mode provides the user more information.  When the user first
clicks on the color bar, the current color and index number displays at
the bottom of the color menu.  What the current color is, is up to the
application.  For example in NCSA Layout 1.1, there is the CanvasColor menu.
When the user first clicks on the color menu, the current canvas color and
index number appear at the bottom of the color menu.  This has to be set
by the application.  To switch to the second mode call:

SetItemIcon(ColorMenu, 1, 1);

To set the color to the current index into the color table

colorIndex: INTEGER;

SetItemMark(ColorMenu, 1, colorIndex);

Sometimes it is useful to use both modes.  For instance in NCSA Layout 1.1
if the selected text is all one color, I use the second mode.  However if
the selected text is more than one color I switch back to the default mode
so the user realizes that more than one color is selected.  To switch to
the default mode call:

SetItemIcon(ColorMenu,1,0);

Well thats the whole interface.  If there are any questions, just email
me at rheintz@ncsa.uiuc.edu.

(This file must be converted with BinHex 4.0)

:#@0[E'pb6@9ZG3""8&"-2j!%!*!)"QeRR3#3"!%!N!-'&`!!"4F!N!0@!!!$fJ!
!!pTJ*ZaJ*["J*[4J*[KJ*[aJ*`"J*`4J*`J*BfpXEh*0C@je!J#3!d&38%`rN!3
"!*!%3!#3"N&38%`rN!3"!*!%3!#3%U!dFSB!N!B'EDS!!!5U!!!%UJ!!"+TJ*ba
J*c"J*c4J*cKJ*caJ*d"J*d4J*dKJ*daJ*e"J*e4J*eKJ*eaJ*f"J*f4J*fJ!N!-
R-#9"0@N!N!25",J!!8j@!!")HJ!S3UG1V3$L6Pj1GCP-58*&8N&849p138e&6dj
-@9p23NT54806!!"19[r`51F!!!6k6PErlNMR(aJJEJ!33qlrmL,B)YJ`,[rfN!"
m!#Jp32rf5'lrlUKd-#i!''X!!LB-3!!$EJ!#(Y"!-$X!"Nll!*!$#J#'!5i"iL"
Z!"3J8#!S!!S)!*!$C`!"qL"Z!"3J8%IS!!i3%e)!FJ!5!0I",@X'![rm,blrr%k
k"'a)E[rb,c`"!!!#)'lrr#m36VS#NLmZrra1ZJ4D9)Y+%dr[!!aR!!'`9)Y`!"!
61!![,J!35'lrmNM%,`41ZJ'd6qm!$'!!!C!!)'i!&#"3)#J!#JJ!N!0R!!&qHJ"
)E[rb5'i!$%kk!eC+!&#2CcSJEJ!31#i!$*K3)'i!#$!%8N#`8'F!!9)`"&*!)'i
!#$#!,bi!%%KZrr*)a#m%6VS"9%r[!!aJ!!%`)'i!#%T3C`!"*L"Z!"!`+!!%N!"
m!#Jp32rb)'i!%$eS!!6rpN*ZrrT)E[rb,c`!!3!#5'lrqNkk!F3JEJ!)3P"2l`!
-B!!!k#"Z!"3J8$&m!5J!"#"Z!"3J8$&m!#J!!L"Z!"3J8%IS!!i3%e)!FJ!5!0I
"5K0Q!!#f,bi!&&Q2,bi!&%kk!a`J(p#m!!!'"Lm!6VS$)L"Z!"3J8%IS!!i3%e)
!FJ!5!0I"+%Xq2!%!GJ!i[!%!F!!T3!!#8dIBr!!'YNGYl%*8@Bp)H!)!6VS#aLe
Irr`TE[rm!!)q2!%!)'lrr#K33NBk2!%"GJ"J"MM'8dIF4EC(EICJ-L"Z!"!`VJ!
1)'i!%$&Z!!`!!M!Z!!l3I!%S)'i!%$&!!!3`,J!-d(`!+#"Z!"!a3!!'61iBq2r
56Pj1G!!5M8026%p5689199"56d-!!%j@r[j)j`%B2Li!#LKZ!"!QEJ!-5'lqrNM
(,`G1ZJ&i-#`!"*!!I!!S0S!`,!!%N!"m!"3h3!!%3QlrrLm,,c`!!3!#5'lrrNk
k!'S`,!!#d(`!#Mm!-#`!"*!!I!!B2`#SNdKZr[j1ZJ&+-!IK5$)(JN!p3Irq-#`
!"*!!I!!80S!hE!!%!!3[#bmm!!%!!NKZrrj1ZJ!J61iBJ2lb6Pj1GC!!4(*KGe0
PE'9MG'P[EN*[H!#3!dj@rp4)j`!B2AcrN!2`2AcrN!2Z2AcrN!2X3QlrpN*Zrr4
#E[rb5'lrk+Kd5'lrh+SC5'lriUSD5'lrmUS85'lrl+S9@BqU!bKI*P4`!#G!!!B
YD`!UrrJQVJ!)-Li!$NM"*$`!!)!!K)%h3J!%*fi!$!!+)%YFL#e)rr`JE[rS)'J
!!L"3*fJ!+J!U,8[re#"ZrqJJD!!#,9$rf#mZrp3[,[rB,blrr#mZ!""b!$m",`#
Sl#GZrrJ!+Lm-UJ4)E[rFUK4)E[rLUK9-lKJ!rma1ANjeM@0[E'pb3fp`H8*TG(-
!!#m#)#m!##"[!!a#CkRZ,`K1ZJ"Z@%mN(dje,`)[,`!)6VS!,+L%,bm!#%kk!&4
B6b3I6R8[!N)R)'m!#Lm3,bm!%ULY%"p)J%M!*"p1G5![!!4R+L"!)NJ3'@FH%K%
5`"!"C[L6b#!*8d!-J!#3!rp["L!m!*!$ra#!)#m!"%je)#m!"'F5)%"`!"!3B!3
3k!!"8FMrqN)3)#m!"%je)PmJ(k"-,S"1FA!!,`Na`!)J6R9`!'$f)PmJ(k%L,SK
1q[rU)PmJAk!P,S"U"N+A6[VrfNlkrp3LAb!I)&qJ*%lkrmSLAb"IS#P1q[r!)Pm
JAk!U6[VrYJ#3!a8#*J#3"!)Q!!$rN!3&3fpXEh)!N!-"!*!$"KF!!!8A!*!$9J"
P[B`'RJ#3!a`!4J!"684&4J#3!a*048j9!*!$(J)Q!!!J!*!%CFH)!LB!#J!!"2i
!C6b!#80[E'pb6@9ZG39$Efa[FMIj!: