📄 bitmap.h
字号:
//-----------------------------------------------------------------------------
// -------------------
// File ....: bitmap.h
// -------------------
// Author...: Tom Hudson
// Date ....: Sptember 1994
//
// History .: Sep, 01 1994 - Started serious coding
// Oct, 18 1994 - First major revision for DLLs, restructuring
// Jul, 10 1995 - Began working with it (Gus J Grubba)
//
//-----------------------------------------------------------------------------
#ifndef BITMAP_H_DEFINED
#define BITMAP_H_DEFINED
#define NOAVIFILE
#include <vfw.h>
#undef NOAVIFILE
#include "palutil.h"
#include "linklist.h"
#include "gbuf.h"
//-- Defines that may change with compiler
#define INTBITS (sizeof(int) * 8)
//-- Class ID's for various DLL's
#define IMGCLASSID 1
#define CYCLECLASSID 2
#define FLICCLASSID 5
#define TARGACLASSID 6
#define YUVCLASSID 7
#define FBCLASSID 8
#define WSDCLASSID 9
#define IFLCLASSID 10
#define BMPCLASSID 11
#define JPEGCLASSID 12
#define TARGAPLSCLASSID 13
#define AVICLASSID 14
#define RLACLASSID 15
//-- local definitions
class BitmapManager;
class BitmapManagerImp;
class BitmapStorage;
class BitmapFilter;
class BitmapDither;
class BitmapInfo;
class BitmapPicker;
class BitmapIO;
class Bitmap;
//-- Temporary definitions to make the compiler happy
class GraphicsWindow;
class BMMInterface;
class DllDir;
//-- External data
extern int TheSystemFrame; // TO DO: Move to App data structure?
//-----------------------------------------------------------------------------
//-- The Primary Bitmap Manager Object
//
extern BMMExport BitmapManager *TheManager; // TO DO: Move to App data structure?
//-- Common Macros ------------------------------------------------------------
//-- Just to make it shorter
#define bVirtual BMMExport virtual
//-- Set up a NULL macro
#ifndef NULL
#define NULL (0)
#endif
//-- Pixel storage classes ----------------------------------------------------
// These are in maxtypes.h now.
//typedef struct {
// BYTE r,g,b;
//} BMM_Color_24;
//
//typedef struct {
// BYTE r,g,b,a;
//} BMM_Color_32;
//
//typedef struct {
// WORD r,g,b;
//} BMM_Color_48;
//
//typedef struct {
// WORD r,g,b,a;
//} BMM_Color_64;
//-- Generic bitmap information structure -------------------------------------
typedef struct {
int width,height;
float aspect,gamma;
DWORD flags;
} BMMImageInfo;
//-- Basic bitmap types supported by Bitmap Manager
#define BMM_NO_TYPE 0 // Not allocated yet
#define BMM_LINE_ART 1
#define BMM_PALETTED 2
#define BMM_GRAY_8 3
#define BMM_GRAY_16 4
#define BMM_TRUE_16 5
#define BMM_TRUE_32 6
#define BMM_TRUE_64 7
//-- Information Only
#define BMM_TRUE_24 8
#define BMM_TRUE_48 9
#define BMM_YUV_422 10
#define BMM_BMP_4 11 //-- Windows BMP 16 color bitmap
#define BMM_PAD_24 12 //-- Padded 24 bit (in a 32 bit register)
//-- Textual Limits
#define MAX_DESCRIPTION 256
//-- The number of bitmap formats supported internally
//#define BMM_FORMATS 6
//-- File types
//#define BMM_NOTYPE 0
//#define BMM_TARGA 1 // System Targa I/O driver
//#define BMM_GIF 2 // System GIF I.O driver
//-- Gamma limits
#define MINGAMMA 0.2f
#define MAXGAMMA 5.0f
//-- openMode values
#define BMM_NOT_OPEN 0 // Not opened yet
#define BMM_OPEN_R 1 // Read-only
#define BMM_OPEN_W 2 // Write
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-- Error Codes for BMMRES type functions
typedef unsigned short BMMRES; // Traps the use of int or BOOL
#define BMMRES_SUCCESS 0
#define BMMRES_ERRORTAKENCARE 1 // Error - Function has already taken action
#define BMMRES_FILENOTFOUND 2
#define BMMRES_MEMORYERROR 3
#define BMMRES_NODRIVER 4 // Device driver responsible for image not present
#define BMMRES_IOERROR 5
#define BMMRES_INVALIDFORMAT 6
#define BMMRES_CORRUPTFILE 7
#define BMMRES_SINGLEFRAME 8 // Goto request on a single frame image
#define BMMRES_INVALIDUSAGE 9 // Bad argument passed to function (Developer Mistake)
#define BMMRES_RETRY 10 // User selected "Retry" from error dialogue
#define BMMRES_NUMBEREDFILENAMEERROR 11
#define BMMRES_INTERNALERROR 12
#define BMMRES_BADFILEHEADER 13
#define BMMRES_CANTSTORAGE 14
#define BMMRES_BADFRAME 15 // Invalid Frame Number Requested
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-- BitmapIO usage types ( returned by BitmapIO::Capability() )
#define BMMIO_NONE 0 // Not defined yet
#define BMMIO_READER (1<<0) // Reads images
#define BMMIO_WRITER (1<<1) // Writes images
#define BMMIO_EXTENSION (1<<2) // Uses file extension (File Filter Type)
#define BMMIO_MULTIFRAME (1<<3) // "File" contains multiple frames (i.e. FLC, AVI)
#define BMMIO_THREADED (1<<4) // Thread aware plug-in
#define BMMIO_RANDOM_ACCESS (1<<5) // Can read and/or write frames in any order
#define BMMIO_NON_CONCURRENT_ACCESS (1<<6) // Cannot handle multiple, concurrent requests (FLC, AVI, VTR's, etc)
#define BMMIO_OWN_VIEWER (1<<7) // Driver has its own image viewer for its image type.
//-- Frame Buffers
#define BMMIO_FRAMEBUFFER (1<<7) // Frame Buffer Driver
#define BMMIO_GRABBER (1<<8) // Device Grabs Video
//-- If the device is able to show its own image info dialogue this flag will be
// set. Otherwise, the host must use BitmapManager::GetImageInfo() and display
// a generic info dialogue.
#define BMMIO_INFODLG (1<<9) // Has Info Dialog
//-- Uninterruptible Driver (AVI, FLIC, etc. cannot stop and go) (GG 02/26/97)
#define BMMIO_UNINTERRUPTIBLE (1<<10)
//-- Drivers that may have a different image for a same given Max frame and same file/device
// name should define this and implement the EvalMatch() method.
#define BMMIO_EVALMATCH (1<<11)
//-- Special IFL device
#define BMMIO_IFL (1<<28)
//-- There is only a single call to the plug-in's control panel but the call specifies
// the nature of the operation going on. It's up to the plug-in to provide different
// interfaces if needed. If one control serves two or more services, all the pertinent
// flags should be set.
#define BMMIO_CONTROLREAD (1<<29) // Device Driver has Control Panel for Read Operations
#define BMMIO_CONTROLWRITE (1<<30) // Device Driver has Control Panel for Write Operations
#define BMMIO_CONTROLGENERIC (1<<31) // Device Driver has a generic Control Panel
//-----------------------------------------------------------------------------
//-- Bitmap close options
#define BMM_CLOSE_COMPLETE 0
#define BMM_CLOSE_ABANDON 1
//-- Filter Types
#define BMM_FILTER_NONE 0
#define BMM_FILTER_DUMMY 1
#define BMM_FILTER_SUM 2
#define BMM_FILTER_PYRAMID 3
//-- Filter Flag values
#define BMM_FILTER_NOFLAGS ((DWORD)0)
#define BMM_FILTER_LERP_WRAP ((DWORD)(1<<0))
//-- Dither Types
#define BMM_DITHER_NONE 0
#define BMM_DITHER_FLOYD 1
//-- Pyramidal filter information
#define MAX_PYRAMID_DEPTH 12
#define LAYER_DIM MAX_PYRAMID_DEPTH+1
typedef struct {
WORD dmax;
void *map[LAYER_DIM];
void *alpha[LAYER_DIM];
} BMM_Pyramid;
//-- Summed-area table information
typedef struct {
DWORD *sat_r,*sat_g,*sat_b,*sat_a;
} BMM_SAT;
//-- Bitmap::CopyImage options
#define COPY_IMAGE_CROP 0 // Copy image to current map size w/cropping if necessary
#define COPY_IMAGE_RESIZE_LO_QUALITY 1 // Resize source image to destination map size (draft)
#define COPY_IMAGE_RESIZE_HI_QUALITY 2 // Resize source image to destination map size (final)
#define COPY_IMAGE_USE_CUSTOM 3 // Based on Image Input Options (BitmapInfo *)
// Class for storing a linked list of file extension strings
MakeLinkedList(TSTR);
//-- GRAINSTART
//-- Callback for Bitmap Effects
typedef BOOL (WINAPI *PBITMAP_FX_CALLBACK)(
LPVOID lpparam, int done, int total, TCHAR *msg
);
//-- GRAINEND
//-----------------------------------------------------------------------------
//-- I/O Handler
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -