NT4/private/wangview/oiwh/include/oidisp.h
2020-09-30 17:12:29 +02:00

1032 lines
44 KiB
C

/****************************************************************************
$Log: S:\products\msprods\oiwh\include\oidisp.h_v $
*
* Rev 1.56 20 Jun 1996 15:15:12 RC
* Added PARM_CREATE_TEXT
*
* Rev 1.55 10 May 1996 14:48:22 BEG06016
* Added OiOpAbortOperation.
*
* Rev 1.54 01 Apr 1996 10:46:16 BEG06016
* Added line removal.
*
* Rev 1.53 05 Mar 1996 07:45:10 BEG06016
* Added color and gamma correction.
* Fixed access violations when freeing pattern brush bitmaps.
* This is not complete but will allow unlocking of most files.
*
* Rev 1.52 01 Mar 1996 08:06:42 BEG06016
* Added color and gamma correction to get/set parms.
*
* Rev 1.51 29 Feb 1996 08:09:26 BEG06016
* Added auto-crop.
*
* Rev 1.50 31 Jan 1996 14:29:30 RC
* Added deskew
*
* Rev 1.49 31 Jan 1996 11:24:22 BLJ
* Added convolution functionality.
*
* Rev 1.48 25 Jan 1996 10:26:14 BLJ
* Added other despekle patterns.
*
* Rev 1.47 23 Jan 1996 11:28:02 BLJ
* Added CropImage to IMGConvertImage.
*
* Rev 1.46 15 Dec 1995 11:26:58 BLJ
* Added invert image.
*
* Rev 1.45 14 Dec 1995 08:38:44 BLJ
* Added BW_AVERAGE_TO_BW scale algorithm.
*
* Rev 1.44 13 Dec 1995 14:38:28 JAR
* modified the annotation text code to remove the user interface dialog
* box entry and allow for the API user to call to edit the annotation text
* strings. The dialog box code has been taken over at the OCX level.
*
* Rev 1.43 14 Nov 1995 07:55:10 BLJ
* Added Brightness and contrast.
*
* Rev 1.42 13 Nov 1995 14:41:22 BLJ
* Made LRECT equal to RECT. This improves debuggability with C++ 4.0.
*
* Rev 1.41 09 Nov 1995 10:36:46 BLJ
* Made LRECT equal to RECT. This improves debuggability with C++ 4.0.
*
*****************************************************************************/
/****************************************************************************/
/* Copyright 1994 (c) Wang Laboratories, Inc. All rights reserved. */
/****************************************************************************/
#ifndef OIDISP_H
#define OIDISP_H
#ifndef OIFILE_H
#include "OIFILE.H"
#endif
#include <time.h>
#ifndef ulong
#define ulong unsigned long
#endif
#ifndef WINVER
#define WINVER 0x030a
#endif
#if (WINVER < 0x030a)
typedef RGBQUAD FAR *LPRGBQUAD;
#endif
typedef UINT FAR *LPUINT;
typedef RECT LRECT;
typedef RECT *LPLRECT;
#ifndef NO_SEQFILE
#define NO_SEQFILE
/*** Unassociate Window Flag Constants. ***/
#define OI_UNASSOC_AS_SOURCE 1
#define OI_UNASSOC_AS_ASSOC 2
#define OI_UNASSOC_ALL 4
/*** Scaling Options ***/
#define SD_FULLSIZE 0
#define SD_HALFSIZE 1
#define SD_QUARTERSIZE 2
#define SD_EIGHTHSIZE 3
#define SD_TWOXSIZE 4
#define SD_FOURXSIZE 5
#define SD_EIGHTXSIZE 6
#define SD_USEBOX 7
#define SD_SCALEUP1 8
#define SD_SCALEDOWN1 9
#define SD_SIXTEENTHSIZE 10
#define SD_FIT_WINDOW 12
//#define SD_ARBITRARY SD_FIT_WINDOW
#define SD_FIT_HORIZONTAL 13
#define SD_FIT_VERTICAL 14
/*** Scrolling Options ***/
#define SD_SCROLLUP 1
#define SD_SCROLLDOWN 2
#define SD_SCROLLLEFT 3
#define SD_SCROLLRIGHT 4
#define SD_SCROLLPERCENTX 5
#define SD_SCROLLPERCENTY 6
/*** Orientation Options ***/
#define OD_ROTRIGHT 1 /* Rotate 90 degrees */
#define OD_ROTLEFT 2 /* Rotate 90 degrees */
#define OD_FLIP 3 /* Rotate 180 degrees */
#define OD_VMIRROR 4 /* Rotate on Vertical Axis */
#define OD_HMIRROR 5 /* Rotate on Horizontal Axis */
/*** Image Display Options ***/
#define OI_DISP_NO 0x0002L
#define OI_DISP_SCROLL 0x0004L
#define OI_NOSCROLL 0x0040L
#define OI_FILE_NEW 0x0100L
#define OI_DOC_NEW 0x0200L
#define OI_DONT_REPAINT 0x0400L
#define OI_USE_CACHEING 0x0080L
/*** The following are obsolete flags. Do not use them. ***/
//#define OI_DISP_WINDOW 0x0001L
//#define OI_DISP_WRAP 0x0008L
//#define OI_USE_NO_EMM 0x0010L
//#define OI_USE_NO_TMP_FIL 0x0020L
/*** "CACHE_FILE_PARMS.stripqueue[].queue_flags" Values ***/
#define CACHE_EXPAND 1
//#define CACHE_ENQUEUE 2
//#define CACHE_DEQUEUE 4
/*** IMGCacheDiscard "unOption" Values ***/
#define CACHE_DISCARD_SYSOLD 0
#define CACHE_DISCARD_WINOLD 1
#define CACHE_DISCARD_WINALL 2
/*** IMGGetParmsCgbw "nParm" Values ***/
#define PARM_IMGPARMS 1
#define PARM_FILE 2
#define PARM_IMAGE_TYPE 3
#define PARM_PALETTE 4
#define PARM_ARCHIVE 5
#define PARM_SCALE 6
#define PARM_SCROLL 7
#define PARM_RESOLUTION 8
#define PARM_DIMENSIONS 9
#define PARM_SELECTION_BOX 10
#define PARM_DISPLAY_PALETTE 11
#define PARM_SCALE_BOX 12
#define PARM_DOC_DATE 13
#define PARM_DWFLAGS 14
#define PARM_GAMMA 15
//#define PARM_GAMMA_ENABLE 16
#define PARM_COLOR 17
//#define PARM_COLOR_ENABLE 18
#define PARM_PALETTE_SCOPE 19
#define PARM_MARK_ATTRIBUTES 20
#define PARM_NAMED_BLOCK 21
#define PARM_MARK_COUNT 22
#define PARM_SCALE_ALGORITHM 23
#define PARM_ROTATION 24
#define PARM_FILE_SCALE 25
#define PARM_MAX_UNDO 26
#define PARM_BRIGHTNESS 27
#define PARM_CONTRAST 28
/*** Gamma Correction ***/
#define GAMMA_USE_DEFAULT 0
/*** Color Correction ***/
#define COLOR_USE_DEFAULT 0
/*** IMGGetParmsCgbw/IMGSetParmsCgbw "flag" Values ***/
#define PARM_RELATIVE 0x0000
#define PARM_PIXEL 0x0000
#define PARM_ERASE_BOX 0x0000
#define PARM_WINDOW_DEFAULT 0x0001
#define PARM_CONSTANT 0x0002
#define PARM_VARIABLE_SCALE 0x0004
#define PARM_WINDOW 0x0008
#define PARM_SCALED 0x0010
#define PARM_FULLSIZE 0x0020
#define PARM_REPAINT 0x0040
#define PARM_ABSOLUTE 0x0080
#define PARM_SYSTEM_DEFAULT 0x0100
#define PARM_PERCENT 0x0200
#define PARM_DONT_ERASE_BOX 0x0400
#define PARM_IMAGE 0x0800
#define PARM_NO_DEFAULT 0x1000
#define PARM_DONT_REPAINT 0x2000
#define PARM_CREATE_TEXT 0x4000
/*** IMGSaveToFileEx additional flags ***/
#define SAVE_ONLY_MODIFIED 0x4000
/*** Palette Scope Options ***/
#define PALETTE_SCOPE_FOREGROUND 1
#define PALETTE_SCOPE_BACKGROUND 2
/*** Display Palettes ***/
#define DISP_PALETTE_USE_DEFAULT 0
#define DISP_PALETTE_BW 1
#define DISP_PALETTE_COMMON 2
#define DISP_PALETTE_CUSTOM 3
#define DISP_PALETTE_GRAY8 4
#define DISP_PALETTE_RGB24 5
// Brightness constants
#define BRIGHTNESS_USE_DEFAULT 0
// Contrast constants
#define CONTRAST_USE_DEFAULT 0
/*** Named block scope ***/
#define NB_SCOPE_SELECTED_MARKS 0
#define NB_SCOPE_ALL_MARKS 1
#define NB_SCOPE_LAST_CREATED_MARK 2
#define NB_SCOPE_DEFAULT_MARK 3
#define NB_SCOPE_USER 4
/*** IMGConvertImage "nType" ***/
#define CONV_IMAGE_TYPE 1
#define CONV_RENDER_ANNOTATIONS 2
#define CONV_RESOLUTION 3
#define CONV_DESPECKLE 4
#define CONV_BRIGHTNESS 5
#define CONV_CONTRAST 6
#define CONV_INVERT 7
#define CONV_CROP 8
#define CONV_CONVOLUTION 9
#define CONV_DESKEW 10
#define CONV_REMOVE_LINES 11
/*** IMGConvertImage "nFlags" ***/
/* CONVF_REPAINT equals PARM_REPAINT */
#define CONVF_REPAINT 0x0040
#define CONVF_CROP_RECT 0x0000
#define CONVF_CROP_BLACK 0x0001
#define CONVF_CROP_WHITE 0x0002
#define CONVF_CROP_BLACK_AND_WHITE 0x0003
/* IMGGetVersion flags. */
#define OI_VERSION_NO_LEADING_ZEROS 0x0001
#define OI_VERSION_NO_DOTS 0x0002
/*** Scaling Algorithm Constants. ***/
#define OI_SCALE_ALG_USE_DEFAULT 0
#define OI_SCALE_ALG_NORMAL 1
#define OI_SCALE_ALG_AVERAGE_TO_GRAY4 2
#define OI_SCALE_ALG_AVERAGE_TO_GRAY8 3
#define OI_SCALE_ALG_STAMP 4
#define OI_SCALE_ALG_BW_MINORITY 5
#define OI_SCALE_ALG_BW_MAJORITY 6
#define OI_SCALE_ALG_BW_KEEP_BLACK 7
#define OI_SCALE_ALG_BW_AVERAGE_TO_BW 8
#define OI_SCALE_ALG_MAX 9
/*** Operation types. ***/
#define OIOP_AN_IMAGE 1
#define OIOP_AN_IMAGE_BY_REFERENCE 2
#define OIOP_AN_LINE 3
#define OIOP_AN_FREEHAND 4
#define OIOP_AN_HOLLOW_RECT 5
#define OIOP_AN_FILLED_RECT 6
#define OIOP_AN_TEXT 7
#define OIOP_AN_TEXT_FROM_A_FILE 8
#define OIOP_AN_TEXT_STAMP 9
#define OIOP_AN_ATTACH_A_NOTE 10
#define OIOP_AN_FORM 12
#define OIOP_SELECT_BY_RECT_VARIABLE 30
#define OIOP_SELECT_BY_RECT_FIXED 31
#define OIOP_SELECT_BY_POINT 32
#define OIOP_DELETE 35
#define OIOP_COPY 36
#define OIOP_PASTE 37
#define OIOP_CUT 38
#define OIOP_SELECT_BY_POINT_OR_RECT 39
#define OIOP_ACTIVATE 40
/*** Visibility Persistance values. ***/
#define VISIBLE_AS_LAST_SEEN 1
#define VISIBLE_ALWAYS 2
#define VISIBLE_NEVER 3
/* SaveAnnotationsToFile uType values. */
#define SAVE_ANO_ALL 0
#define SAVE_ANO_NONE 1
#define SAVE_ANO_VISIBLE 2
#define SAVE_ANO_SELECTED 3
/* the following values are used ONLY WHEN BASE IMAGE IS BI-LEVEL and
should be OR'd with the above values */
#define SAVE_ANO_BILEVEL_ALL_BLACK 4
#define SAVE_ANO_BILEVEL_ALL_WHITE 8
/* OiAnSelectByMarkAttrib and OiAnSelectByMarkNamedBlock flag values. */
#define OIAN_REPAINT 0x0001
#define OIAN_SELECT_ALL 0x0002
#define OIAN_SELECT_LAST_CREATED 0x0004
#define OIAN_DONT_CHANGE_SELECT_RECT 0x0008
/* OiOpStartOperation flag values. */
#define OIAN_UPPER_LEFT 0x00010000
#define OIOP_ANNOTATIONS_ONLY 0x00020000
#define OIOP_IMAGE_ONLY 0x00040000
#define OIOP_IMAGE_AND_ANNOTATIONS 0x00000000
/* text style thingies */
#define OIAN_TEXTSTYLEBOLD 0x0001
#define OIAN_TEXTSTYLEITALIC 0x0002
#define OIAN_TEXTSTYLEUNDERLINE 0x0004
#define OIAN_TEXTSTYLESTRIKEOUT 0x0008
/* Start operation defines. */
#define OIAN_START_OP_STRING_LENGTH MAXFILESPECLENGTH
// Rectangle conversion types
#define CONV_WINDOW_TO_FULLSIZE 0
#define CONV_SCALED_TO_FULLSIZE 1
#define CONV_WINDOW_TO_SCALED 2
#define CONV_FULLSIZE_TO_SCALED 3
#define CONV_SCALED_TO_WINDOW 4
#define CONV_FULLSIZE_TO_WINDOW 5
// Remove line type defines.
#define CONV_REMOVE_HORZ 1
#define CONV_REMOVE_VERT 2
#define CONV_REMOVE_BOTH (CONV_REMOVE_HORZ | CONV_REMOVE_VERT)
/* IMGCacheUpdate nUpdateType types. */
#define CACHE_UPDATE_OVERWRITE_FILE 0
#define CACHE_UPDATE_OVERWRITE_PAGE 1
#define CACHE_UPDATE_DELETE_FILE 2
#define CACHE_UPDATE_DELETE_PAGE 3
#define CACHE_UPDATE_INSERT_BEFORE 4
#define CACHE_UPDATE_APPEND 5
#define CACHE_UPDATE_ROTATE_ALL 6
#define CACHE_UPDATE_CLOSE_FILE 7
/* bArchive flags. */
#define ARCHIVE_PASTED_INTO_IMAGE 0x0001
#define ARCHIVE_ROTATED_IMAGE 0x0002
#define ARCHIVE_SCALED_IMAGE 0x0004
#define ARCHIVE_MODIFIED_ANNOTATIONS 0x0008
#define ARCHIVE_CHANGED_IMAGE_TYPE 0x0010
#define ARCHIVE_CHANGED_IMAGE_RESOLUTION 0x0020
/* Despekle patterns. */
#define DESPEKLE_PATTERN1 1
#define DESPEKLE_PATTERN2 2
#define DESPEKLE_PATTERN3 3
#define DESPEKLE_PATTERN4 4
#define DESPEKLE_PATTERN5 5
#define DESPEKLE_PATTERN6 6
/* Convolution types */
#define CONVOLUTION_USER_DEFINED 0 // User defined parameters.
#define CONVOLUTION_LOW_PASS1 1 // Matrix = 0 0 0 0 0
// 0 1 1 1 0
// 0 1 1 1 0
// 0 1 1 1 0
// 0 0 0 0 0
// Divider = 9, Sum = 1,ABS = 0
#define CONVOLUTION_LOW_PASS2 2 // Matrix = 0 0 0 0 0
// 0 1 1 1 0
// 0 1 2 1 0
// 0 1 1 1 0
// 0 0 0 0 0
// Divider = 10, Sum = 1,ABS = 0
#define CONVOLUTION_LOW_PASS3 3 // Matrix = 0 0 0 0 0
// 0 1 2 1 0
// 0 2 4 2 0
// 0 1 2 1 0
// 0 0 0 0 0
// Divider = 16, Sum = 1,ABS = 0
#define CONVOLUTION_HIGH_PASS1 4 // Matrix = 0 0 0 0 0
// 0 -1 -1 -1 0
// 0 -1 9 -1 0
// 0 -1 -1 -1 0
// 0 0 0 0 0
// Divider = 1, Sum = 1,ABS = 0
#define CONVOLUTION_HIGH_PASS2 5 // Matrix = 0 0 0 0 0
// 0 0 -1 0 0
// 0 -1 5 -1 0
// 0 0 -1 0 0
// 0 0 0 0 0
// Divider = 1, Sum = 1,ABS = 0
#define CONVOLUTION_HIGH_PASS3 6 // Matrix = 0 0 0 0 0
// 0 1 -2 1 0
// 0 -2 5 -2 0
// 0 1 -2 1 0
// 0 0 0 0 0
// Divider = 1, Sum = 1,ABS = 0
#define CONVOLUTION_VERTICAL_EDGE1 7 // Matrix = 0 0 0 0 0
// 0 0 0 0 0
// 0 -1 1 0 0
// 0 0 0 0 0
// 0 0 0 0 0
// Divider = 1, Sum = 0,ABS = 1
#define CONVOLUTION_VERTICAL_EDGE2 8 // Matrix = 0 -1 0 1 0
// 0 -1 0 1 0
// 0 -1 0 1 0
// 0 -1 0 1 0
// 0 -1 0 1 0
// Divider = 1, Sum = 0,ABS = 1
#define CONVOLUTION_HORIZONTAL_EDGE1 9 // Matrix = 0 0 0 0 0
// 0 0 -1 0 0
// 0 0 1 0 0
// 0 0 0 0 0
// 0 0 0 0 0
// Divider = 1, Sum = 0,ABS = 1
#define CONVOLUTION_HORIZONTAL_EDGE2 10 // Matrix = 0 0 0 0 0
// -1 -1 -1 -1 -1
// 0 0 0 0 0
// 1 1 1 1 1
// 0 0 0 0 0
// Divider = 1, Sum = 0,ABS = 1
#define CONVOLUTION_HORZ_AND_VERT_EDGE 11 // Matrix = 0 0 0 0 0
// 0 -1 0 0 0
// 0 0 1 0 0
// 0 0 0 0 0
// 0 0 0 0 0
// Divider = 1, Sum = 0,ABS = 1
#define CONVOLUTION_DIRECTIONAL_EDGE_N 12 // Matrix = 0 0 0 0 0
// 0 1 1 1 0
// 0 1 -2 1 0
// 0 -1 -1 -1 0
// 0 0 0 0 0
// Divider = 1, Sum = 0,ABS = 1
#define CONVOLUTION_DIRECTIONAL_EDGE_NE 13 // Matrix = 0 0 0 0 0
// 0 1 1 1 0
// 0 -1 -2 1 0
// 0 -1 -1 1 0
// 0 0 0 0 0
// Divider = 1, Sum = 0,ABS = 1
#define CONVOLUTION_DIRECTIONAL_EDGE_E 14 // Matrix = 0 0 0 0 0
// 0 -1 1 1 0
// 0 -1 -2 1 0
// 0 -1 1 1 0
// 0 0 0 0 0
// Divider = 1, Sum = 0,ABS = 1
#define CONVOLUTION_DIRECTIONAL_EDGE_SE 15 // Matrix = 0 0 0 0 0
// 0 -1 -1 1 0
// 0 -1 -2 1 0
// 0 1 1 1 0
// 0 0 0 0 0
// Divider = 1, Sum = 0,ABS = 1
#define CONVOLUTION_DIRECTIONAL_EDGE_S 16 // Matrix = 0 0 0 0 0
// 0 -1 -1 -1 0
// 0 1 -2 1 0
// 0 1 1 1 0
// 0 0 0 0 0
// Divider = 1, Sum = 0,ABS = 1
#define CONVOLUTION_DIRECTIONAL_EDGE_SW 17 // Matrix = 0 0 0 0 0
// 0 1 -1 -1 0
// 0 1 -2 -1 0
// 0 1 1 1 0
// 0 0 0 0 0
// Divider = 1, Sum = 0,ABS = 1
#define CONVOLUTION_DIRECTIONAL_EDGE_W 18 // Matrix = 0 0 0 0 0
// 0 1 1 -1 0
// 0 1 -2 -1 0
// 0 1 1 -1 0
// 0 0 0 0 0
// Divider = 1, Sum = 0,ABS = 1
#define CONVOLUTION_DIRECTIONAL_EDGE_NW 19 // Matrix = 0 0 0 0 0
// 0 1 1 1 0
// 0 1 -2 -1 0
// 0 1 -1 -1 0
// 0 0 0 0 0
// Divider = 1, Sum = 0,ABS = 1
#define CONVOLUTION_BLUR 20 // Matrix = 1 1 1 1 1
// 1 1 1 1 1
// 1 1 1 1 1
// 1 1 1 1 1
// 1 1 1 1 1
// Divider = 25, Sum = 1,ABS = 0
#define CONVOLUTION_LAPLACE_EDGE1 21 // Matrix = 0 0 0 0 0
// 0 0 1 0 0
// 0 1 -4 1 0
// 0 0 1 0 0
// 0 0 0 0 0
// Divider = 1, Sum = 0,ABS = 1
#define CONVOLUTION_LAPLACE_EDGE2 22 // Matrix = 0 0 0 0 0
// 0 -1 -1 -1 0
// 0 -1 8 -1 0
// 0 -1 -1 -1 0
// 0 0 0 0 0
// Divider = 1, Sum = 0,ABS = 1
#define CONVOLUTION_LAPLACE_EDGE3 23 // Matrix = 0 0 0 0 0
// 0 -1 -1 -1 0
// 0 -1 9 -1 0
// 0 -1 -1 -1 0
// 0 0 0 0 0
// Divider = 1, Sum = 1,ABS = 0
#define CONVOLUTION_LAPLACE_EDGE4 24 // Matrix = 0 0 0 0 0
// 0 1 -2 1 0
// 0 -2 4 -2 0
// 0 1 -2 1 0
// 0 0 0 0 0
// Divider = 1, Sum = 0,ABS = 1
#define BW_EMBOLDEN1 25 // Matrix = 0 0 0 0 0
// 0 1 0 0 0
// 0 0 1 0 0
// 0 0 0 0 0
// 0 0 0 0 0
// Divider = 2, Sum = 1,ABS = 0
#define BW_EMBOLDEN2 26 // Matrix = 0 0 0 0 0
// 0 1 1 0 0
// 0 1 1 0 0
// 0 0 0 0 0
// 0 0 0 0 0
// Divider = 4, Sum = 1,ABS = 0
#define BW_EMBOLDEN3 27 // Matrix = 0 0 0 0 0
// 0 1 1 1 0
// 0 1 1 1 0
// 0 1 1 1 0
// 0 0 0 0 0
// Divider = 9, Sum = 1,ABS = 0
#define BW_LIGHTEN1 28 // Matrix = 0 0 0 0 0
// 0 0 0 0 0
// 0 0 1 0 0
// 0 0 0 1 0
// 0 0 0 0 0
// Divider = 1, Sum = 1,ABS = 0
#define BW_LIGHTEN2 29 // Matrix = 0 0 0 0 0
// 0 0 0 0 0
// 0 0 1 1 0
// 0 0 1 1 0
// 0 0 0 0 0
// Divider = 1, Sum = 1,ABS = 0
#define BW_LIGHTEN3 30 // Matrix = 0 0 0 0 0
// 0 1 1 1 0
// 0 1 1 1 0
// 0 1 1 1 0
// 0 0 0 0 0
// Divider = 1, Sum = 1,ABS = 0
typedef struct tagCONVOLUTION{
int nType; // The type of convolution to perform.
int nAdder; // The number to add before dividing (used for thresholding).
int nDivider; // The number to divide the result by.
BOOL bAbsolute; // Make negative value positive.
int nMatrix[25]; // The matrix to use.
// Array must be 25 ints in length.
}CONVOLUTION, *PCONVOLUTION;
typedef struct tagMAX_UNDO_STRUCT{
int nMaxLevels; /* The maximum number of undo levels. */
int nMaxMemory; /* The maximum amount of memory to use. */
}MAX_UNDO_STRUCT, FAR *LPMAX_UNDO_STRUCT;
typedef struct tagCONV_RESOLUTION_STRUCT{
UINT uHRes; /* New Horz resolution DPI. */
UINT uVRes; /* New Vert resolution DPI. */
UINT uScaleAlgorithm; /* The scale algorithm to use. */
}CONV_RESOLUTION_STRUCT, FAR *LPCONV_RESOLUTION_STRUCT;
typedef struct tagCONV_REMOVE_LINES_STRUCT{
int nMinLengthInPixels; // Min length of a line in pixels.
int nMaxWidthInPixels; // Min width of a line in pixels.
int nDensityOfLine; // The density of a line. The higher the number,
// the more black pixels required to qualify as a line.
// 1 means little black needed.
// 8 means much black needed.
// 9 means line must be atleast 2 pixels wide.
int nLinesToRemove; // The type of lines to remove.
// CONV_REMOVE_HORZ
// CONV_REMOVE_VERT
// CONV_REMOVE_BOTH
}CONV_REMOVE_LINES_STRUCT, *PCONV_REMOVE_LINES_STRUCT;
/* This structure will be used whenever a UINT value per image type is needed. */
typedef struct tagIMG_TYPE_UINT{
UINT BW; /* Value for BW (BI_LEVEL). */
UINT Gray4; /* Value for Gray4. */
UINT Gray8; /* Value for Gray8. */
UINT Pal4; /* Value for Pal4. */
UINT Pal8; /* Value for Pal8. */
UINT Rgb24; /* Value for RGB24. */
UINT Bgr24; /* Value for BGR24. */
}IMG_TYPE_UINT, far *LPIMG_TYPE_UINT;
typedef struct tagOIAN_MARK_ATTRIBUTES{
UINT uType; /* The type of the mark (or operation).
This will be ignored for sets.*/
LRECT lrBounds; /* Rect in FULLSIZE units.
This could be a rect or 2 points.*/
RGBQUAD rgbColor1; /* This is the main color. (Example: This is the
color of all lines, rects, and stand alone
text.*/
RGBQUAD rgbColor2; /* This is the secondary color. (Example: This
is the color of the text of an ATTACH_A_NOTE.)*/
BOOL bHighlighting; /* TRUE = The mark will be drawn highlighted.
This attribute is currently only valid
for lines, rectangles, and freehand.*/
BOOL bTransparent; /* TRUE = The mark will be drawn transparent.
If the mark is drawn transparent, then white
pixels are not drawn (ie. there is nothing
drawn for this mark where it contains white
pixels. This attribute is currently only
available for images. This attribute being
set to TRUE will cause significant
performance reduction.*/
UINT uLineSize; /* The size of the line etc. This is passed
onto Windows and is currently in logical
pixels for lines and rectangles.*/
UINT uStartingPoint; /* The shape put on the starting of a
line (arrow, circle, square, etc).
For this release, this must be set to 0.*/
UINT uEndPoint; /* The shape put on the end of a
line (arrow, circle, square, etc).
For this release, this must be set to 0.*/
LOGFONT lfFont; /* The font information for the text. */
BOOL bMinimizable; /* TRUE = This mark can be minimized
by the user. This flag is only used for
marks that have a minimizable
characteristic such as ATTACH_A_NOTE.*/
time_t Time; /* The time that the mark was first saved.
in seconds from 00:00:00 1-1-1970 (GMT).*/
BOOL bVisible; /* TRUE means that the layer is currently set
to be visible.*/
DWORD dwPermissions; /* The permission that the current user has
for this mark. Ignored for sets.
Valid only for get and compare. */
long lReserved[10]; /* Reserved for future expansion.
For this release these must be set to 0.*/
}OIAN_MARK_ATTRIBUTES, FAR *LPOIAN_MARK_ATTRIBUTES;
typedef struct tagOIAN_MARK_ATTRIBUTE_ENABLES{
BOOL bType;
BOOL bBounds;
BOOL bColor1;
BOOL bColor2;
BOOL bHighlighting;
BOOL bTransparent;
BOOL bLineSize;
BOOL bStartingPoint;
BOOL bEndPoint;
BOOL bFont;
BOOL bMinimizable;
BOOL bTime;
BOOL bVisible;
BOOL bPermissions;
BOOL bReserved[10]; /* Reserved for future expansion.
For this release these must be set to FALSE.*/
}OIAN_MARK_ATTRIBUTE_ENABLES, FAR *LPOIAN_MARK_ATTRIBUTE_ENABLES;
typedef struct tagOI_BLOCK{
long lSize; /* The size of this block.*/
LPSTR lpBlock; /* The pointer to the block.*/
}OI_BLOCK, FAR *LPOI_BLOCK;
typedef struct tagPARM_FILE_STRUCT{
char szCabinetName [MAXNAMELENGTH];
char szDrawerName [MAXNAMELENGTH];
char szFolderName [MAXNAMELENGTH];
char szDocName [MAXNAMELENGTH];
char szFileName [MAXFILESPECLENGTH];
UINT nDocPageNumber;
UINT nDocTotalPages;
UINT nFilePageNumber;
UINT nFileTotalPages;
UINT nFileType;
}PARM_FILE_STRUCT, FAR *LPPARM_FILE_STRUCT;
typedef struct tagPARM_DOC_DATE_STRUCT{
char szDocCreationDate [MAXDATELENGTH];
char szDocModificationDate [MAXDATELENGTH];
}PARM_DOC_DATE_STRUCT, FAR *LPPARM_DOC_DATE_STRUCT;
typedef struct tagPARM_PALETTE_STRUCT{
UINT nPaletteEntries; /* Number of RGBQUAD entries */
LPRGBQUAD lpPalette; /* RGBQUAD array defining the palette */
}PARM_PALETTE_STRUCT, FAR *LPPARM_PALETTE_STRUCT;
typedef struct tagPARM_SCROLL_STRUCT{
long lHorz;
long lVert;
}PARM_SCROLL_STRUCT, FAR *LPPARM_SCROLL_STRUCT;
typedef struct tagPARM_RESOLUTION_STRUCT{
UINT nHResolution;
UINT nVResolution;
}PARM_RESOLUTION_STRUCT, FAR *LPPARM_RESOLUTION_STRUCT;
typedef struct tagPARM_DIM_STRUCT{
UINT nWidth;
UINT nHeight;
UINT nWidthDisplayed;
UINT nHeightDisplayed;
}PARM_DIM_STRUCT, FAR *LPPARM_DIM_STRUCT;
typedef struct tagPARM_GAMMA_STRUCT{
int nGammaRed;
int nGammaGreen;
int nGammaBlue;
int nReserved1; /* Must be zero*/
int nReserved; /* Must be zero*/
}PARM_GAMMA_STRUCT, FAR *LPPARM_GAMMA_STRUCT;
//typedef struct tagPARM_GAMMA_ENABLE_STRUCT{
// BOOL bUseDefault:1;
// BOOL bEnableRGB24:1;
// BOOL bEnableBGR24:1;
// BOOL bEnableCOM8:1;
// BOOL bEnableCUS8:1;
// BOOL bEnablePAL4:1;
// BOOL bEnableGRAY8:1;
// BOOL bEnableGRAY4:1;
//}PARM_GAMMA_ENABLE_STRUCT, FAR *LPPARM_GAMMA_ENABLE_STRUCT;
typedef struct tagPARM_COLOR_STRUCT{
int nColorRed;
int nColorGreen;
int nColorBlue;
int nReserved1; /* Must be zero*/
int nReserved; /* Must be zero*/
}PARM_COLOR_STRUCT, FAR *LPPARM_COLOR_STRUCT;
//typedef struct tagPARM_COLOR_ENABLE_STRUCT{
// BOOL bUseDefault:1;
// BOOL bEnableRGB24:1;
// BOOL bEnableBGR24:1;
// BOOL bEnableCOM8:1;
// BOOL bEnableCUS8:1;
// BOOL bEnablePAL4:1;
// BOOL bEnableGRAY8:1;
// BOOL bEnableGRAY4:1;
//}PARM_COLOR_ENABLE_STRUCT, FAR *LPPARM_COLOR_ENABLE_STRUCT;
typedef struct tagPARM_MARK_ATTRIBUTES_STRUCT{
OIAN_MARK_ATTRIBUTES Attributes;
OIAN_MARK_ATTRIBUTE_ENABLES Enables;
}PARM_MARK_ATTRIBUTES_STRUCT, FAR *LPPARM_MARK_ATTRIBUTES_STRUCT;
typedef struct tagPARM_NAMED_BLOCK_STRUCT{
char szBlockName[8];
UINT uScope;
UINT uNumberOfBlocks;
OI_BLOCK Block[1];
}PARM_NAMED_BLOCK_STRUCT, FAR *LPPARM_NAMED_BLOCK_STRUCT;
typedef struct tagPARM_MARK_COUNT_STRUCT{
UINT uScope; /* Input into function. "NB_SCOPE_xxx" */
UINT uMarkCount; /* Ouput from function. */
}PARM_MARK_COUNT_STRUCT, FAR *LPPARM_MARK_COUNT_STRUCT;
typedef struct tagPARM_SCALE_ALGORITHM_STRUCT{
UINT uImageFlags; /* This is one of the ITYPE_xxx flags */
UINT uScaleAlgorithm; /* This is one of the OI_SCALE_ALG_xxx constants. */
}PARM_SCALE_ALGORITHM_STRUCT, far *LPPARM_SCALE_ALGORITHM_STRUCT;
typedef struct tagPARM_FILE_SCALE_STRUCT{
int nFileHScale; // The file's scale amount. This will take place in IMGDisplayFile.
int nFileHScaleFlags; // The file's scale flags. This will take place in IMGDisplayFile.
BOOL bFileScaleValid; // TRUE = nFileHScale and nFileHScaleFlag contain valid data.
}PARM_FILE_SCALE_STRUCT, far *LPPARM_FILE_SCALE_STRUCT;
typedef struct tagIMGPARMS{
char cabinet_name [MAXNAMELENGTH];
char drawer_name [MAXNAMELENGTH];
char folder_name [MAXNAMELENGTH];
char doc_name [MAXNAMELENGTH];
char file_name [MAXFILESPECLENGTH];
int page_num;
int total_num_pages;
int height_in_pixels;
int width_in_pixels;
int bits_per_pixel;
int num_planes;
int upper_left_x_offset;
int upper_left_y_offset;
int x_resolut;
int y_resolut;
int thumb_x;
int thumb_y;
int file_type;
int image_scale;
BOOL archive;
int width_displayed;
int height_displayed;
DWORD dwFlags;
}IMGPARMS, FAR *LPIMGPARMS;
typedef struct tagCACHE_FILE_PARMS{
HWND hWnd;
char file_name [MAXFILESPECLENGTH];
DWORD TIF_subfile_tag;
WORD wPage_number;
unsigned char byNameType; /* Reserved for future use */
int wPair_count; /* Number of Strip queue entries */
struct stripq{
DWORD start_strip;
DWORD end_strip;
unsigned char priority;
unsigned char queue_flags;
}stripqueue [1]; /* Strip queue entry */
}CACHE_FILE_PARMS, FAR *LP_CACHE_FILE_PARMS;
typedef struct tagOIOP_START_OPERATION_STRUCT{
OIAN_MARK_ATTRIBUTES Attributes;/* The mark attributes and type of operation.*/
char szString[OIAN_START_OP_STRING_LENGTH]; /* This is a string to be used by the
operation. It is currently 256 bytes long.*/
long lReserved[2]; /* Reserved for future expansion.
For this release these must be set to 0.*/
}OIOP_START_OPERATION_STRUCT, FAR *LPOIOP_START_OPERATION_STRUCT;
typedef struct tagSAVE_EX_STRUCT{
LPSTR lpFileName;
int nPage;
UINT uPageOpts;
UINT uFileType;
FIO_INFO_CGBW FioInfoCgbw;
BOOL bUpdateImageFile;
BOOL bScale;
BOOL bUpdateDisplayScale;
UINT uScaleFactor;
UINT uScaleAlgorithm;
UINT uAnnotations; /* One of the SAVE_ANO_XXXX constants. */
BOOL bRenderAnnotations; /* TRUE = Render the annotations producing an unannotated image.*/
BOOL bConvertImageType; /* TRUE = Convert the image to the type specified.*/
UINT uImageType; /* The image type to convert it to. */
BOOL bUpdateLastViewed; /* TRUE = last viewed info for awd files
written to image struct */
UINT uReserved[15]; /* MUST be 0. (Allows future expansion.)*/
}SAVE_EX_STRUCT, far *LPSAVE_EX_STRUCT;
// 9512.05 jar Text Annotation Externalization
// Structure for the previously private named block for
// ALL annotation text marks, the name for these blocks is
// "OiAnText".
//
// nCurrentOrientation this field should be initialized to zero
// when allocated, otherwise it should NOT be
// altered
//
// uCurrentScale this field should be initialized to zero
// when allocated, otherwise it should NOT be
// altered
//
// uCreationScale this field should be initialized to zero
// when allocated, otherwise it should NOT be
// altered
//
// uAnoTextLength this field should be initialized to the
// size of the string buffer area allocated;
// i.e., = Named Block Size - (sizeof (int) +
// 3*sizeof(UINT)).
// Otherwise, this should be equal to the
// length of the actual string stored in the
// named block.
//
// szAnoText This is the pointer to the string buffer.
//
typedef struct tagOiAnTextPrivData{
int nCurrentOrientation;
UINT uCurrentScale;
UINT uCreationScale;
UINT uAnoTextLength;
char szAnoText[1];
}OIAN_TEXTPRIVDATA, *LPOIAN_TEXTPRIVDATA;
// 9512.05 jar Text Annotation Externalization
/*** Display File Function Prototypes ***/
#ifdef WIN32
int WINAPI IMGAssociateWindow(HWND hWnd, HWND hWndSource, int nFlags);
int WINAPI IMGCacheDiscard (HWND hWnd, UINT unOption); /* can't obsolete */
int WINAPI IMGCacheDiscardFileCgbw (HWND hWnd, LPSTR lpszFileName, int nPage);
int WINAPI IMGCacheFile (LP_CACHE_FILE_PARMS lpCacheFileParms);
int WINAPI IMGCacheUpdate(HWND hWnd, LPSTR lpFileName, int nPage, int nUpdateType);
int WINAPI IMGConvertRect(HWND hWnd, LPLRECT lplRect, int nConversionType);
int WINAPI IMGClearImageEx(HWND hWnd, LRECT lrRect, int nFlags);
int WINAPI IMGClearWindow (HWND hWnd);
int WINAPI IMGCloseDisplay (HWND hWnd);
int WINAPI IMGConvertImage (HWND hWnd, UINT unType, void FAR *lpConvert,
int nFlags);
int WINAPI IMGDisableScrollBar (HWND hWnd);
int WINAPI IMGDisplayFile (HWND hWnd, LPSTR lpszFileName, int nPage, DWORD dwFlags);
int WINAPI IMGEnableScrollBar (HWND hWnd);
int WINAPI IMGGetParmsCgbw (HWND hWnd, UINT unParm, void FAR *lpParm, int nFlags);
int WINAPI IMGGetScalingAlgorithm(HWND hWnd, UINT uImageFlags,
LPUINT lpuScalingAlgorithm, int nFlags);
int WINAPI IMGGetVersion(LPSTR lpszModule, LPSTR lpszVersion,
int nSize, int nFlags);
int WINAPI IMGOpenDisplayCgbw (HWND hWnd, DWORD dwFlags, UINT unHeight,
UINT unWidth, UINT unImageType,
UINT unPaletteEntries, LPRGBQUAD lpPaletteTable);
int WINAPI IMGOrientDisplay (HWND hWnd, int nOrientation, BOOL bRepaint);
int WINAPI IMGPaintToDC(HWND hWnd, HDC hDC, RECT rRepaintRect,
UINT PaintAnnoFlag, BOOL bPaintSelectedWithoutHandles,
BOOL bForceOpaqueRectangles,
int nScale, int nHScale, int nVScale, long lHOffset, long lVOffset);
int WINAPI IMGReadDisplay (HWND hWnd, LPSTR lpsBuffer, LPUINT lpunCount);
int WINAPI IMGRepaintDisplay (HWND hWnd, LPRECT lpRect);
int WINAPI IMGSavetoFileEx (HWND hWnd, LPSAVE_EX_STRUCT lpSaveEx, int nFlags);
int WINAPI IMGSeekDisplay (HWND hWnd, ulong ulOffset);
int WINAPI IMGSetDC(HWND hWnd, HDC hDC);
int WINAPI IMGSetParmsCgbw (HWND hWnd, UINT unParm, void FAR *lpParm, int nFlags);
int WINAPI IMGSetScalingAlgorithm(HWND hWnd, UINT uImageFlags,
UINT uScalingAlgorithm, int nFlags);
int WINAPI IMGThumbnailSetScale (HWND hWnd) ;
int WINAPI IMGUnassociateWindow(HWND hWnd, int nFlags);
int WINAPI IMGUpdateScrollBar (HWND hWnd);
int WINAPI IMGWriteDisplay (HWND hWnd, LPSTR lpsBuffer, LPUINT lpunCount);
int WINAPI OiAnSelectByMarkAttrib(HWND hWnd,
LPOIAN_MARK_ATTRIBUTES lpAttributes,
LPOIAN_MARK_ATTRIBUTE_ENABLES lpEnables,
BOOL bSelect, BOOL bModifyIfEqual, int nFlags);
int WINAPI OiAnSelectByMarkNamedBlock(HWND hWnd, LPSTR lpBlockName,
LPSTR lpBlock, long lBlockLength,
BOOL bSelect, BOOL bModifyIfEqual, int nFlags);
int WINAPI OiAnRenderClipboardFormat (HWND hWnd, UINT uType);
int WINAPI OiIsPointOverSelection(HWND hWnd, POINT ptPoint,
LPBOOL lpbPointIsOverSelection, int nFlags);
int WINAPI OiOpAbortOperation(HWND hWnd, int nFlags);
int WINAPI OiOpStartOperation(HWND hWnd, LPOIOP_START_OPERATION_STRUCT lpStartStruct,
POINT ptPoint, WPARAM fwKeys, int nFlags);
int WINAPI OiOpContinueOperation(HWND hWnd, POINT ptPoint, int nFlags);
int WINAPI OiOpEndOperation(HWND hWnd);
int WINAPI OiRedo(HWND hWnd, int nFlags);
int WINAPI OiRotateAllPages(HWND hWnd, LPSTR lpFileName, int nRotation, int nFlags);
int WINAPI OiSetMaxUndos(HWND hWnd, int nMaxUndos, int nFlags);
int WINAPI OiUndo(HWND hWnd, int nFlags);
int WINAPI OiUndoEndOperation(HWND hWnd, int nFlags);
#endif
#endif /* #ifndef NO_SEQFILE */
#ifndef NO_SEQDOC
#define NO_SEQDOC
/*** IMGDisplayRelPage "wRelPage" Values ***/
#define RF_PREVIOUS 1
#define RF_NEXT 2
#define RF_FIRST 3
#define RF_LAST 4
/*** Length of Cabinet, Drawer, Folder, and Document Names ***/
#define CABLTH 21
#define DRAWLTH 21
#define FOLDLTH 21
#define DOCLTH 21
/*** "DOCNAME.wSaveMode" Values ***/
#define DOC_OVERWRITE 0x01
#define DOC_INSERT 0x02
#define DOC_APPEND 0x04
#define DOC_EXIST 0x08
typedef struct tagDOCNAME
{
char CabinetName [CABLTH];
char DrawerName [DRAWLTH];
char FolderName [FOLDLTH];
char DocName [DOCLTH];
WORD PageNum;
WORD wSaveMode;
} DOCNAME, FAR *LPDOCNAME;
/*** Display Document Function Prototypes ***/
WORD FAR PASCAL IMGDisplayDoc (HWND hWnd, LPDOCNAME lpDocName, DWORD dwFlags);
WORD FAR PASCAL IMGDisplayRelPage (HWND hWnd, WORD wRelPage);
WORD FAR PASCAL IMGSavetoDoc (HWND hWnd, LPDOCNAME lpDocName, LPSTR lpszFileName, WORD wPage);
#endif /* #ifndef NO_SEQDOC */
#ifndef NO_UIVIEW
#define NO_UIVIEW
/*** Display User Interface Function Prototypes */
WORD FAR PASCAL IMGUIViewConvertImage (HWND hWnd);
WORD FAR PASCAL IMGUIViewGotoPage (HWND hWnd);
WORD FAR PASCAL IMGUIViewImageSummary (HWND hWnd);
WORD FAR PASCAL IMGUIViewZoom (HWND hWnd, LPRECT lpRect);
WORD FAR PASCAL IMGViewPage (HWND hWnd, WORD wPage);
#endif /* #ifndef NO_UIVIEW */
#endif /* #ifndef OIDISP_H */