Пример #1
0
void PopulateColorServicesInfo (GPtr globals, ColorServicesInfo *csinfo)
{
	CSInitInfo(csinfo);
	// now populate color services info with particulars:
	csinfo->sourceSpace = gColor;
	csinfo->resultSpace = gColorize;
	CSCopyColor(csinfo->colorComponents, gSourceColor);
	// on input, source color; on output, result color
}
Пример #2
0
OSErr DoConversion (GPtr globals, HWND dp, ColorServicesInfo *csinfo)
{
	OSErr	gotErr = noErr;
	short 	loop = 0;
	
	PopulateColorServicesInfo (globals, csinfo);
	gotErr = ColorServices (csinfo);
	gColorize = csinfo->resultSpace; // should be the same
	CSCopyColor (gTargetColor, csinfo->colorComponents);
	for (loop = 0; loop < 4; loop++)
		StuffNumber(dp, dEditTarget1 + loop, gTargetColor[loop]);

	return gotErr;
}
Пример #3
0
void ValidateParameters (GPtr globals)
{
	if (gStuff->parameters == NULL)
	{ // We haven't created these yet.

		gStuff->parameters = PINewHandle ((long) sizeof (TParameters));

		if (gStuff->parameters != NULL)
		{ // Got it.  Fill out the fields.
			CSSetColor (gSourceColor, 0, 0, 0, 255);
			CSCopyColor (gTargetColor, gSourceColor);

			gColor = gColorize = 0;

		}
		else
		{ // Oops.  Couldn't allocate memory.
				
			gResult = memFullErr;
			return;
		}
	} // parameters
	
} // end ValidateParameters
Пример #4
0
DLLExport BOOL WINAPI FilterProc(HWND hDlg, UINT wMsg, WPARAM wParam, LPARAM lParam)       // Win32 Change
{
	long				x = 1;
	double				dx = 0;
	short				numberErr = noErr;
	short				item;
	static short		lastItem = 0, lastTitem = 0;
	static short		cColor;
	static int16		cSourceColor[4];
	static short		cColorize;
	static int16		cTargetColor[4];
	static short		gotErr = 0;
	PIType				key = NULLID;
	static ColorServicesInfo	csinfo;
	int					cmd;
	static GPtr			globals = NULL;		  /* need to be static */
	
	switch  (wMsg)
	{

		case  WM_INITDIALOG:

			/* set up globals	*/

			globals = (GPtr) lParam;

			CenterDialog(hDlg);
			
			// save globals in locals for later if user cancels
			CSCopyColor(cSourceColor, gSourceColor);
			CSCopyColor(cTargetColor, gTargetColor);
			cColor = gColor;
			cColorize = gColorize;
					
			UpdateDialogInfo(globals, hDlg);

			SelectTextItem(hDlg, dEditSource1);

			/* drop into PAINT */
		case WM_PAINT:
			// paint here
			return FALSE;
			break;

		case  WM_COMMAND:
	  		item = COMMANDID (wParam);              // WIN32 Change
			cmd = HIWORD (wParam);

			switch  (item)
			{
				case dSourcePicker:
					if ((numberErr = Validate(hDlg, &lastItem, &dx, true)) == noErr)
					{ // didn't have to change focus.  Continue.
						if (cmd == BN_CLICKED)
						{
							PopulateColorServicesInfo (globals, &csinfo);
							csinfo.selector = plugIncolorServicesChooseColor; // change
							csinfo.resultSpace = plugIncolorServicesChosenSpace; // will return user chosen
							
							if (gotErr = ColorServices (&csinfo) == noErr)
							{ // no problems.  Do this.
								gColor = csinfo.resultSpace;
								CSCopyColor (gSourceColor, csinfo.colorComponents);
								DoConversion(globals, hDlg, &csinfo);
								UpdateDialogInfo (globals, hDlg);
							}
							SelectTextItem(hDlg, lastTitem);
							return FALSE;
						}
					}
					break;
				case dTargetPicker:
					if ((numberErr = Validate(hDlg, &lastItem, &dx, true)) == noErr)
					{ // didn't have to change focus.  Continue.
						if (cmd == BN_CLICKED)
						{
							PopulateColorServicesInfo (globals, &csinfo);
							csinfo.selector = plugIncolorServicesChooseColor; // picker
							if (gotErr = ColorServices (&csinfo) == noErr)
							{ // no problems.  Do this.
								// move old target to source space
								CSCopyColor (gSourceColor, gTargetColor);
								gColor = gColorize;
								// now pull results to target
								gColorize = csinfo.resultSpace; // should be the same
								CSCopyColor (gTargetColor, csinfo.colorComponents);
								UpdateDialogInfo (globals, hDlg);
							}
							SelectTextItem(hDlg, lastTitem);
							return FALSE;
						}
					}
					break;
				case OK:
					if ((numberErr = Validate(hDlg, &lastItem, &dx, true)) == noErr)
					{ // validated fine
						if (cmd == BN_CLICKED)
						{ // wants to dismiss.  End dialog.
							EndDialog(hDlg, item); 
							return TRUE;
						}
					}
					break;
				case CANCEL:
					if (cmd == BN_CLICKED)
					{ // return all globals from saved locals
						CSCopyColor(gSourceColor, cSourceColor);
						CSCopyColor(gTargetColor, cTargetColor);
						gColor = cColor;
						gColorize = cColorize;

						gResult = userCanceledErr;
						EndDialog(hDlg, item);          // WIN32 change
						return TRUE;
					}
					// don't ever validate during cancel
					break;
				default:
					if (item >= dSource1 && item <= dSourceEnd)
					{
						if ((numberErr = Validate(hDlg, &lastItem, &dx, true)) == noErr)
						{ // validated fine
							if (cmd == BN_CLICKED)
							{ // process button
								SetRadioGroupState (hDlg, dSource1, dSourceEnd, item);
								gColor = item - dSource1;
						
								DoConversion (globals, hDlg, &csinfo);
								SelectTextItem(hDlg, lastTitem);
								return FALSE;
							}
						}
					}
					else if (item >= dTarget1 && item <= dTargetEnd)
					{ // set group then do conversion
						if ((numberErr = Validate(hDlg, &lastItem, &dx, true)) == noErr)
						{ // validated fine
							if (cmd == BN_CLICKED)
							{ // process							
								SetRadioGroupState (hDlg, dTarget1, dTargetEnd, item);
								gColorize = item - dTarget1;
								
								DoConversion (globals, hDlg, &csinfo);
								SelectTextItem(hDlg, lastTitem);
								return FALSE;
							}
						}
					}
					else if (item >= dEditSource1 && item <= dEditSourceEnd)
					{
						if ((numberErr = Validate(hDlg, &lastItem, &dx, true)) == noErr)
						{
							if (cmd == EN_KILLFOCUS)
								lastItem = item; // validate will get this
							else if (cmd == EN_CHANGE)
							{ // do me
								numberErr = Validate(hDlg, &item, &dx, false);
								gSourceColor[item - dEditSource1] = (int16)dx;
								lastTitem = item;

								DoConversion (globals, hDlg, &csinfo);
								return FALSE;
							}
						}
					}
					break;
			} // switch (item)
			break; // case WM_COMMAND
		default:
			return FALSE;
			break;
	} // switch
	return  TRUE;
}