' Lighten_Darken_Colors.iwb AUTODEFINE "OFF" ' Compile as Window $INCLUDE "windowssdk.inc" $INCLUDE "ctl.inc" DEF win:WINDOW DEF r, g, b, pct:INT DEF rt, gt, bt:INT ENUM controls b_p_rgb = 1000 b_exit s_red e_red s_green e_green s_blue e_blue s_pct e_pct s_current s_lighten s_darken ENDENUM OPENWINDOW win,0,0,600,700,0x80C80080,0,"Lighten or Darken Colors",&handler_win SETFONT win,"Courier New",12,400 FRONTPEN win,RGB(000,000,000) BACKPEN win,RGB(255,255,255) CONTROL win,@BUTTON,"Process",300,10,110,25,0x50010001,b_p_rgb CONTROL win,@BUTTON,"Exit",490,10,60,25,0x50010001,b_exit r = 255 CONTROL win,@STATIC," Red:",20,73,50,25,0x50010001,s_red CONTROL win,@EDIT,STR$(r),70,70,40,25,0x50010001|@CTEDITLCASE,e_red CONTROLCMD win,e_red,@EDSETLIMITTEXT,3 g = 200 CONTROL win,@STATIC,"Green:",20,103,50,25,0x50010001,s_green CONTROL win,@EDIT,STR$(g),70,100,40,25,0x50010001|@CTEDITLCASE,e_green CONTROLCMD win,e_green,@EDSETLIMITTEXT,3 b = 200 CONTROL win,@STATIC," Blue:",20,133,50,25,0x50010001,s_blue CONTROL win,@EDIT,STR$(b),70,130,40,25,0x50010001|@CTEDITLCASE,e_blue CONTROLCMD win,e_blue,@EDSETLIMITTEXT,3 pct = 10 CONTROL win,@STATIC,"Percent:",20,183,50,25,0x50010001,s_pct CONTROL win,@EDIT,STR$(pct),80,180,40,25,0x50010001|@CTEDITLCASE,e_pct CONTROLCMD win,e_pct,@EDSETLIMITTEXT,2 SETCONTROLCOLOR win,b_p_rgb,RGB(000,000,000),RGB(064,224,208) 'Black, Truquoise SETCONTROLCOLOR win,b_exit,RGB(000,000,000),RGB(255,000,000) 'Black, Red CONTROL win,@STATIC,"Current",150,45,50,20,0x50010001,s_current CONTROL win,@STATIC,"Lighter",300,45,50,20,0x50010001,s_lighten CONTROL win,@STATIC,"Darker",450,45,50,20,0x50010001,s_darken process() WAITUNTIL IsWindowClosed(win) END SUB handler_win(),int SELECT @MESSAGE CASE @IDCREATE CENTERWINDOW win CASE @IDCLOSEWINDOW CASE& @IDDESTROY CLOSEWINDOW win CASE @IDCONTROL SELECT @CONTROLID ' Exit CASE b_exit CLOSEWINDOW win ' Process CASE b_p_rgb process() ENDSELECT ENDSELECT RETURN 0 ENDSUB SUB process() DEF ro, go, bo, i:INT DEF pctr, ror, gor, bor:DOUBLE r = VAL(GETCONTROLTEXT(win,e_red)) g = VAL(GETCONTROLTEXT(win,e_green)) b = VAL(GETCONTROLTEXT(win,e_blue)) pct = VAL(GETCONTROLTEXT(win,e_pct)) rt = r gt = g bt = b RECT win,150,70,100,100,RGB(000,000,000),RGB(r,g,b) RECT win,300,70,300,650,RGB(255,255,255),RGB(255,255,255) pctr = pct / 100.0 ror = r gor = g bor = b ror = (255 - ror) * pctr gor = (255 - gor) * pctr bor = (255 - bor) * pctr ro = ror go = gor bo = bor FOR i = 1 TO 5 rt = rt + ro IF rt > 255 THEN rt = 255 gt = gt + go IF gt > 255 THEN gt = 255 bt = bt + bo IF bt > 255 THEN bt = 255 SELECT i CASE 1 RECT win,300,70,100,100,RGB(000,000,000),RGB(rt,gt,bt) MOVE win,300,170 PRINT win,rt, gt, bt CASE 2 RECT win,300,190,100,100,RGB(000,000,000),RGB(rt,gt,bt) MOVE win,300,290 PRINT win,rt, gt, bt CASE 3 RECT win,300,310,100,100,RGB(000,000,000),RGB(rt,gt,bt) MOVE win,300,410 PRINT win,rt, gt, bt CASE 4 RECT win,300,430,100,100,RGB(000,000,000),RGB(rt,gt,bt) MOVE win,300,530 PRINT win,rt, gt, bt CASE 5 RECT win,300,550,100,100,RGB(000,000,000),RGB(rt,gt,bt) MOVE win,300,650 PRINT win,rt, gt, bt ENDSELECT NEXT i rt = r gt = g bt = b ror = r gor = g bor = b ror = ror * pctr gor = gor * pctr bor = bor * pctr ro = ror go = gor bo = bor 'MOVE win, 100,300 'PRINT win, ro, go, bo FOR i = 1 TO 5 rt = rt - ro IF rt < 0 THEN rt = 0 gt = gt - go IF gt < 0 THEN gt = 0 bt = bt - bo IF bt < 0 THEN bt = 0 SELECT i CASE 1 RECT win,450,70,100,100,RGB(000,000,000),RGB(rt,gt,bt) MOVE win,450,170 PRINT win,rt, gt, bt CASE 2 RECT win,450,190,100,100,RGB(000,000,000),RGB(rt,gt,bt) MOVE win,450,290 PRINT win,rt, gt, bt CASE 3 RECT win,450,310,100,100,RGB(000,000,000),RGB(rt,gt,bt) MOVE win,450,410 PRINT win,rt, gt, bt CASE 4 RECT win,450,430,100,100,RGB(000,000,000),RGB(rt,gt,bt) MOVE win,450,530 PRINT win,rt, gt, bt CASE 5 RECT win,450,550,100,100,RGB(000,000,000),RGB(rt,gt,bt) MOVE win,450,650 PRINT win,rt, gt, bt ENDSELECT NEXT i RETURN ENDSUB