コード例 #1
0
void TextureFillProc( HWND hWindow, UINT msg, int x, int y, UINT32 Option )
/************************************************************************/
{
FNAME szFileName;
LPIMAGE lpImage;
TEXTUREFILL_PARMS parms;

switch (msg)
    {
    case WM_CREATE:	// The first mouse down message
	// Load the texture
	if (!IsOnImage(hWindow, x, y))
		break;
	if (!LookupExtFile(Texture.TextureName, szFileName, IDN_TEXTURE))
		break;
	if (!FileExists(szFileName))
		{
		Message(IDS_EOPEN, (LPSTR)szFileName);
		break;
		}
    lpImage = (LPIMAGE)GetImagePtr ( hWindow );
	parms.TextureOpacity = Texture.TextureOpacity;
	parms.TextureMergeMode = Texture.TextureMergeMode;
	lstrcpy(parms.TextureName, Texture.TextureName);
	parms.fHorzFlip = Texture.fHorzFlip;
	parms.fVertFlip = Texture.fVertFlip;
	ProcessCommand(lpImage->lpCmdList, IDS_CMD_TEXTUREFILL, &parms);
	break;

	case WM_ACTIVATE:
	if (!Option) // a deactivate
		{
		FrameClose( lpTextureFrame );
		lpTextureFrame = NULL;
		}
	return;
		
    case WM_LBUTTONDOWN:
	break;

    case WM_LBUTTONUP:
	Tool.bActive = NO;
	break;

    case WM_MOUSEMOVE:	// sent when ToolActive is on
	break;

    case WM_LBUTTONDBLCLK:
	break;

    case WM_DESTROY:	// The cancel operation message
	Tool.bActive = NO;
	break;
    }
}
コード例 #2
0
HANDLE LoadGrabberLibrary( LPSTR lpExtName )
{
	HMODULE hDLL;
	FNAME szDLL;
	static HMODULE hStaticDLL;
	static FNAME szStaticDLL;

	if ( !lpExtName )
		{ // A cleanup call
		if ( hStaticDLL )
			{
		  	FreeLibrary( hStaticDLL );
			hStaticDLL = NULL;
			szStaticDLL[0] = '\0';
			}
		return( NULL );
		}

	if ( !LookupExtFile( lpExtName, szDLL, IDN_SCANNER ) )
		return( NULL );

	if ( hStaticDLL )
		{ // If we have a DLL already loaded
		if ( !bKeepDLL || !StringsEqual( szStaticDLL, szDLL ) )
			{ // If we don't keep DLL's or its a new one...
		  	FreeLibrary( hStaticDLL );
			hStaticDLL = NULL;
			szStaticDLL[0] = '\0';
			}
		}

	if ( hStaticDLL )
		return( hStaticDLL );

	if ( !(hDLL = (HMODULE)AstralLoadLibrary(szDLL))  )
		return( NULL );
	hStaticDLL = hDLL;
	lstrcpy( szStaticDLL, szDLL );
	return( hDLL );
}
コード例 #3
0
BOOL TextureFillImage(
	LPIMAGE lpImage,
	LPTEXTUREFILL_PARMS lpParms)
{
	ENGINE Engine;
	FNAME szFileName;
	LPFRAME lpTexture;
	FRMTYPEINFO TypeInfo;

	ImgGetTypeInfo(lpImage, &TypeInfo);

	if (!LookupExtFile(lpParms->TextureName, szFileName, IDN_TEXTURE))
	{
		lpParms->Common.StatusCode = SC_FILENOTFOUND;
		return(FALSE);
	}
	ProgressBegin(2, lpParms->Common.idDirty-IDS_UNDOFIRST+IDS_PROGFIRST);
	CReadImage read(szFileName);
	if ( !(lpTexture = read.ReadFrame(TypeInfo) ))
	{
		ProgressEnd();
		lpParms->Common.StatusCode = SC_READERROR;
		return(FALSE);
	}

	SetEngineOld(&Engine, NO, NULL, NULL, lpTexture,
		lpParms->fHorzFlip, lpParms->fVertFlip,
		NULL, NULL, lpParms->TextureOpacity, lpParms->TextureMergeMode);
	lpParms->Common.StatusCode = LineEngineSelObj(lpImage,&Engine,lpParms->Common.idDirty);
	if (!AstralIsRectEmpty(&Engine.rUpdate))
	{
 		lpParms->Common.UpdateType = UT_AREA;
		lpParms->Common.rUpdateArea = Engine.rUpdate;
	}
	ProgressEnd();
	return(lpParms->Common.StatusCode == SC_SUCCESS);
}
コード例 #4
0
void PlayBatchMacro(LPLIST lpQueueList)
/***********************************************************************/
{
	LPQUEUEITEM 	lpQueueItem = NULL;
	LPMACROITEM 	lpMacroItem;
	FNAME 			szFileName;
	LIST 			TempList;
	BOOL			fError = TRUE;

	fPCDNotice = FALSE;
	while (TRUE)
	{
		if (lpQueueItem)
			lpQueueItem = (LPQUEUEITEM)ListGetNext(lpQueueItem);
		else
			lpQueueItem = (LPQUEUEITEM)ListGetHead(lpQueueList);

		if (!lpQueueItem)
		{
			fError = FALSE;
			break;
		}

		ListInit(&lpQueueItem->PacketList);

		// create a command list for the load command
		if (!CreateLoadFileParms(0, lpQueueItem->szFileName, TRUE,
 								&lpQueueItem->cmsInfo,
								&lpQueueItem->PhotoCDResOverride,
								&lpQueueItem->parms))
			continue;

		lpMacroItem = NULL;
		while (TRUE)
		{
			if (lpMacroItem)
				lpMacroItem = (LPMACROITEM)ListGetNext(lpMacroItem);
			else
				lpMacroItem = (LPMACROITEM)ListGetHead(&lpQueueItem->MacroList);
			if (!lpMacroItem)
				break;

			if ( !LookupExtFile( lpMacroItem->szMacro, szFileName, IDN_MACRO ) )
				continue;

			// read in the entire macro file for faster processing
			if (!ReadMacro(szFileName, &TempList))
				continue;
			if (MacroAnyLoadCommands(&TempList))
    		{
	    		Message(IDS_BADBATCHMACRO);
				DestroyPacketList(&TempList);
				continue;
		    }
			ListAddTail(&lpQueueItem->PacketList, ListGetHead(&TempList));
		}

		if (!SetupMacro(lpQueueItem))
			break;
	}
	if (!fError)
	{
		if (EnableLogging(TRUE))
		{
			lpQueueItem = NULL;
			while (!fError)
			{
				if (lpQueueItem)
					lpQueueItem = (LPQUEUEITEM)ListGetNext(lpQueueItem);
				else
					lpQueueItem = (LPQUEUEITEM)ListGetHead(lpQueueList);
				if (!lpQueueItem)
					break;
				if (!PlayMacro(NULL, NULL, 1, NO, &lpQueueItem->PacketList, NULL, lpQueueItem->PhotoCDResOverride))
					break;
			}
		 	EnableLogging(FALSE);
		}
	}

	lpQueueItem = NULL;
	while (TRUE)
	{
		if (lpQueueItem)
			lpQueueItem = (LPQUEUEITEM)ListGetNext(lpQueueItem);
		else
			lpQueueItem = (LPQUEUEITEM)ListGetHead(lpQueueList);
		if (!lpQueueItem)
			break;

		DestroyPacketList(&lpQueueItem->PacketList);
		DestroyPtrList(&lpQueueItem->MacroList);
	}
	DestroyPtrList(lpQueueList);
}
コード例 #5
0
LOCAL void Convert_OnCommand(HWND hDlg, int id, HWND hControl, UINT codeNotify)
/************************************************************************/
{
BOOL Bool;

switch (id)
	{
	case IDC_MINITYPES:
// case IDC_MINI256:
// case IDC_MINI16:
// case IDC_MINI8:
// case IDC_MINICUSTOM:
	if ( !(id = HandleCombo( hDlg, id, codeNotify )) )
		break;
	Convert.MiniType = id;

	if (Convert.MiniType == IDC_MINI256)
		Convert.ConvertColors = 256;
	else
	if (Convert.MiniType == IDC_MINI16)
		Convert.ConvertColors = 16;
	else
	if (Convert.MiniType == IDC_MINI8)
		Convert.ConvertColors = 8;
	Convert_Enable(hDlg);
	break;

	case IDC_DITHERTYPES:
//	case IDC_DITHERPATTERN:
//	case IDC_DITHERSCATTERED:
//	case IDC_DITHERNONE:
	if ( !(id = HandleCombo( hDlg, id, codeNotify )) )
		break;
	if ( id == IDC_DITHERPATTERN )
		{
		Convert.fDither = YES;
		Convert.fScatter = NO;
		Convert.ConvertDitherType = DT_PATTERN;
		}
	else
	if ( id == IDC_DITHERSCATTERED )
		{
		Convert.fDither = NO;
		Convert.fScatter = YES;
		Convert.ConvertDitherType = DT_SCATTER;
		}
	else
		{
		Convert.fDither = NO;
		Convert.fScatter = NO;
		Convert.ConvertDitherType = DT_NONE;
		}
	break;

	case IDC_PALETTETYPES:
//	case IDC_PALETTEOPTIMIZED:
//	case IDC_PALETTESTANDARD:
//	case IDC_PALETTECUSTOM:
	if ( !(id = HandleCombo( hDlg, id, codeNotify )) )
		break;
	if (id == IDC_PALETTEOPTIMIZED)
		Convert.ConvertType = CT_OPTIMIZED;
	else
	if (id == IDC_PALETTESTANDARD)
		Convert.ConvertType = CT_STANDARD;
	else
		Convert.ConvertType = CT_CUSTOM;
	Convert.fOptimize = ( id == IDC_PALETTEOPTIMIZED );
	Convert_Enable(hDlg);
	break;

	case IDC_PALETTECOLORS:
	if ( GetFocus() != GetDlgItem( hDlg, id ) )
		break;
	if ( codeNotify != EN_CHANGE )
		break;
	Convert.ConvertColors = GetDlgItemSpin( hDlg, id, &Bool, NO );
	break;

	case IDC_EXTNAMES:
	GetExtName( hDlg, IDC_EXTNAMES, IDC_FILENAME,
		Convert.ConvertPalette, IDN_PALETTE, codeNotify );
	break;

	case IDC_EXTMANAGE:
	PopupMenu( hDlg, id, IDC_FILENAME );
	break;

	case IDC_ADDEXT:
	case IDC_DELETEEXT:
	case IDC_RENAMEEXT:
	ExtNameManager( hDlg, IDC_EXTNAMES, IDC_FILENAME, Convert.ConvertPalette,
		IDN_PALETTE, id, NO );
	break;

    case IDOK:
	// make sure we can open a colormap
	if (Convert.ConvertType == CT_CUSTOM)
		{
		FNAME szFileName;
		LPCOLORMAP lpColorMap;

		if ( !LookupExtFile( Convert.ConvertPalette, szFileName, IDN_PALETTE ) )
			break;
		if (!(lpColorMap = Palette_ReadColorMap(szFileName)))
			break;
		FrameDestroyColorMap(lpColorMap);
		}

	AstralDlgEnd( hDlg, TRUE );
	break;

    case IDCANCEL:
	AstralDlgEnd( hDlg, FALSE );
	break;

   default:
	break;
   }
}