diff options
Diffstat (limited to 'gs/psi/dwimg.h')
-rw-r--r-- | gs/psi/dwimg.h | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/gs/psi/dwimg.h b/gs/psi/dwimg.h new file mode 100644 index 000000000..69c5a4c04 --- /dev/null +++ b/gs/psi/dwimg.h @@ -0,0 +1,98 @@ +/* Copyright (C) 2001-2008 Artifex Software, Inc. + All Rights Reserved. + + This software is provided AS-IS with no warranty, either express or + implied. + + This software is distributed under license and may not be copied, modified + or distributed except as expressly authorized under the terms of that + license. Refer to licensing information at http://www.artifex.com/ + or contact Artifex Software, Inc., 7 Mt. Lassen Drive - Suite A-134, + San Rafael, CA 94903, U.S.A., +1(415)492-9861, for further information. +*/ +/* $Id$ */ + +#ifndef dwimg_INCLUDED +# define dwimg_INCLUDED + + +/* Windows Image Window structure */ + +typedef struct IMAGE_DEVICEN_S IMAGE_DEVICEN; +struct IMAGE_DEVICEN_S { + int used; /* non-zero if in use */ + int visible; /* show on window */ + char name[64]; + int cyan; + int magenta; + int yellow; + int black; + int menu; /* non-zero if menu item added to system menu */ +}; +#define IMAGE_DEVICEN_MAX 8 + +typedef struct IMAGE_S IMAGE; +struct IMAGE_S { + void *handle; + void *device; + HWND hwnd; + HBRUSH hBrush; /* background */ + int raster; + unsigned int format; + unsigned char *image; + BITMAPINFOHEADER bmih; + HPALETTE palette; + int bytewidth; + int devicen_gray; /* true if a single separation should be shown gray */ + IMAGE_DEVICEN devicen[IMAGE_DEVICEN_MAX]; + + /* periodic redrawing */ + UINT update_timer; /* identifier */ + int update_tick; /* timer duration in milliseconds */ + int update_count; /* Number of WM_TIMER messages received */ + int update_interval; /* Number of WM_TIMER until refresh */ + int pending_update; /* We have asked for periodic updates */ + int pending_sync; /* We have asked for a SYNC */ + + /* Window scrolling stuff */ + int cxClient, cyClient; + int cxAdjust, cyAdjust; + int nVscrollPos, nVscrollMax; + int nHscrollPos, nHscrollMax; + + /* thread synchronisation */ + HANDLE hmutex; + + IMAGE *next; + + HWND hwndtext; /* handle to text window */ + + int x, y, cx, cy; /* window position */ +}; + +extern IMAGE *first_image; + +/* Main thread only */ +IMAGE *image_find(void *handle, void *device); +IMAGE *image_new(void *handle, void *device); +void image_delete(IMAGE *img); +int image_size(IMAGE *img, int new_width, int new_height, int new_raster, + unsigned int new_format, void *pimage); +int image_separation(IMAGE *img, int comp_num, const char *name, + unsigned short c, unsigned short m, unsigned short y, unsigned short k); + +/* GUI thread only */ +void image_open(IMAGE *img); +void image_close(IMAGE *img); +void image_sync(IMAGE *img); +void image_page(IMAGE *img); +void image_presize(IMAGE *img, int new_width, int new_height, int new_raster, + unsigned int new_format); +void image_poll(IMAGE *img); +void image_updatesize(IMAGE *img); + +/* To be called during initialization after the text window has been created */ +void image_textwindow(HWND hwnd); + + +#endif /* dwimg_INCLUDED */ |