diff options
author | kem <kem> | 2000-02-22 15:37:57 +0000 |
---|---|---|
committer | kem <kem> | 2000-02-22 15:37:57 +0000 |
commit | 3033c9bfc1f7d29d3c87214d33cb9c5a5bbd22f9 (patch) | |
tree | a0726451c24e98fda169a2528118b7b2315d3ca7 /xc/include/DPS/DPSScrollWP.h | |
parent | aaf0250c05ea51b0b850b2b4675d611faccb0fe7 (diff) |
Import of XFree86 3.9.18X_3_9_18
Diffstat (limited to 'xc/include/DPS/DPSScrollWP.h')
-rw-r--r-- | xc/include/DPS/DPSScrollWP.h | 283 |
1 files changed, 283 insertions, 0 deletions
diff --git a/xc/include/DPS/DPSScrollWP.h b/xc/include/DPS/DPSScrollWP.h new file mode 100644 index 000000000..10726c775 --- /dev/null +++ b/xc/include/DPS/DPSScrollWP.h @@ -0,0 +1,283 @@ +/* + * DPSScrollWP.h + * + * (c) Copyright 1993-1994 Adobe Systems Incorporated. + * All rights reserved. + * + * Permission to use, copy, modify, distribute, and sublicense this software + * and its documentation for any purpose and without fee is hereby granted, + * provided that the above copyright notices appear in all copies and that + * both those copyright notices and this permission notice appear in + * supporting documentation and that the name of Adobe Systems Incorporated + * not be used in advertising or publicity pertaining to distribution of the + * software without specific, written prior permission. No trademark license + * to use the Adobe trademarks is hereby granted. If the Adobe trademark + * "Display PostScript"(tm) is used to describe this software, its + * functionality or for any other purpose, such use shall be limited to a + * statement that this software works in conjunction with the Display + * PostScript system. Proper trademark attribution to reflect Adobe's + * ownership of the trademark shall be given whenever any such reference to + * the Display PostScript system is made. + * + * ADOBE MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THE SOFTWARE FOR + * ANY PURPOSE. IT IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY. + * ADOBE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL + * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NON- INFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL ADOBE BE LIABLE + * TO YOU OR ANY OTHER PARTY FOR ANY SPECIAL, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER WHETHER IN AN ACTION OF CONTRACT, + * NEGLIGENCE, STRICT LIABILITY OR ANY OTHER ACTION ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ADOBE WILL NOT + * PROVIDE ANY TRAINING OR OTHER SUPPORT FOR THE SOFTWARE. + * + * Adobe, PostScript, and Display PostScript are trademarks of Adobe Systems + * Incorporated which may be registered in certain jurisdictions + * + * Author: Adobe Systems Incorporated + */ + +#ifndef _DPSScrolledWindowP_H +#define _DPSScrolledWindowP_H + +#include <DPS/DPSScrollW.h> + +typedef enum {DSWStart, DSWDrawingVisible, DSWDrewVisible, + DSWDrawingBackground, DSWDone} DSWDrawingStage; + +typedef struct { + /* Resources */ + DPSContext context; + int area_width; + int area_height; + float scale; + float *ctm_ptr; + float *inv_ctm_ptr; + Pixmap backing_pixmap; + Pixmap feedback_pixmap; + DPSGState window_gstate; + DPSGState backing_gstate; + DPSGState feedback_gstate; + float *dirty_areas; + short num_dirty_areas; + int pixmap_limit; + int absolute_pixmap_limit; + int watch_progress_delay; + Boolean use_backing_pixmap; + Boolean use_feedback_pixmap; + Boolean watch_progress; + Boolean minimal_drawing; + Boolean document_size_pixmaps; + Boolean application_scrolling; + + XtCallbackList setup_callback; + XtCallbackList expose_callback; + XtCallbackList background_callback; + XtCallbackList feedback_callback; + XtCallbackList resize_callback; + + /* Subwidgets */ + + Widget scrolled_window; + Widget h_scroll; + Widget v_scroll; + Widget drawing_area; + + /* Private fields */ + float ctm[6]; + float orig_inv_ctm[6]; + float inv_ctm[6]; + int x_offset, y_offset; + int feedback_width, feedback_height; + float drawing_width, drawing_height; /* scaled drawing size in X coords */ + int unscaled_width, unscaled_height; + int pixmap_width, pixmap_height; + float scroll_pic_x, scroll_pic_y; + int scroll_win_x, scroll_win_y; + int scroll_x, scroll_y; + int scroll_h_value, scroll_v_value; /* These may be virtual */ + int scroll_h_size, scroll_v_size; + int scroll_h_max, scroll_v_max; + int origin_x, origin_y; /* origin loc. relative to X offset */ + int *pending_expose; + short num_pending_expose; + short pending_expose_size; + float *pending_dirty; + short num_pending_dirty; + short pending_dirty_size; + float *current_drawing; + short num_current_drawing; + short current_drawing_size; + short dirty_areas_size; + float *prev_dirty_areas; + short prev_dirty_areas_size; + short num_prev_dirty_areas; + float *scratch; /* To avoid reallocating buffers */ + short num_scratch; + short scratch_size; + GC ge_gc; /* Generates GraphicsExposes on copy */ + GC no_ge_gc; /* Generates no GraphicsExposes */ + XtWorkProcId work; + XtPointer start_feedback_data; + XtPointer continue_feedback_data; + DSWDrawingStage drawing_stage; + Boolean use_saved_scroll; + Boolean context_inited; + Boolean doing_feedback; + Boolean feedback_displayed; + Boolean big_pixmap; /* Is the pixmap larger than the window? */ + Boolean scrolling; +} DPSScrolledWindowPart; + +typedef struct _DPSScrolledWindowRec { + CorePart core; + CompositePart composite; + ConstraintPart constraint; + XmManagerPart manager; + DPSScrolledWindowPart sw; +} DPSScrolledWindowRec; + +/* Here's a list of the various rectangle lists we use in the widget and + what they're for. In all cases _size is the number of slots in the + list, and num_ is the number of slots currently in use. + + dirty_areas: A list of all areas of the drawing that either need to + be drawn or are in the process of being drawn. + + prev_dirty_areas: Used as a buffer during feedback drawing. + + current_drawing: A list of all areas of the drawing that are currently + being drawn. This is the view clip for any calls to the expose callback. + + pending_dirty: A list of all areas for which exposures have arrived + since drawing was begun. This is only maintained if drawing is + being done to the window (either watch progress is on, or there is no + backing pixmap, or we're doing feedback without a feedback pixmap). + + pending_expose: Same areas as pending_dirty, but kept in X coordinates. + This is always maintained. + + scratch: Used to hold temporary copies of rectangle lists. +*/ + +#ifdef _NO_PROTO + +typedef void (*DSWSetScaleProc) (); +typedef void (*DSWScrollPointProc) (); +typedef void (*DSWScrollByProc) (); +typedef void (*DSWScrollToProc) (); +typedef void (*DSWSetScaleAndScrollProc) (); +typedef void (*DSWConvertXToPSProc) (); +typedef void (*DSWConvertPSToXProc) (); +typedef void (*DSWAddToDirtyAreaProc) (); +typedef Boolean (*DSWTakeFeedbackPixmapProc) (); +typedef Boolean (*DSWGiveFeedbackPixmapProc) (); +typedef void (*DSWStartFeedbackDrawingProc) (); +typedef void (*DSWEndFeedbackDrawingProc) (); +typedef void (*DSWSetFeedbackDirtyAreaProc) (); +typedef void (*DSWFinishPendingDrawingProc) (); +typedef void (*DSWAbortPendingDrawingProc) (); +typedef void (*DSWGetDrawingInfoProc) (); +typedef void (*DSWUpdateDrawingProc) (); +typedef void (*DSWGetScrollInfoProc)(); + +#else /* _NO_PROTO */ + +#if defined(__cplusplus) || defined(c_plusplus) +typedef "C" { +#endif + +/* Note use of long and double in prototypes: this makes the library + work correctly when linked with no-prototype compiled objects */ + +typedef void (*DSWSetScaleProc) (Widget w, double scale, + long fixedX, long fixedY); +typedef void (*DSWScrollPointProc) (Widget w, double psX, double psY, + long xX, long xY); +typedef void (*DSWScrollByProc) (Widget w, long dx, long dy); +typedef void (*DSWScrollToProc) (Widget w, long x, long y); +typedef void (*DSWSetScaleAndScrollProc) (Widget w, double scale, + double psX, double psY, + long xX, long xY); +typedef void (*DSWConvertXToPSProc) (Widget w, long xX, long xY, + float *psX, float *psY); +typedef void (*DSWConvertPSToXProc) (Widget w, double psX, double psY, + int *xX, int *xY); +typedef void (*DSWAddToDirtyAreaProc) (Widget w, float *rect, long n); +typedef Boolean (*DSWTakeFeedbackPixmapProc) (Widget w, Pixmap *p, + int *width, int *height, + int *depth, Screen **screen); +typedef Boolean (*DSWGiveFeedbackPixmapProc) (Widget w, Pixmap p, + int width, int height, + int depth, Screen *screen); +typedef void (*DSWStartFeedbackDrawingProc) (Widget w, + XtPointer start_feedback_data); +typedef void (*DSWEndFeedbackDrawingProc) (Widget w, Bool restore_window); +typedef void (*DSWSetFeedbackDirtyAreaProc) (Widget w, float *rects, int count, + XtPointer continue_feedback_data); +typedef void (*DSWFinishPendingDrawingProc) (Widget w); +typedef void (*DSWAbortPendingDrawingProc) (Widget w); +typedef void (*DSWGetDrawingInfoProc) (Widget w, DSWDrawableType *type, + Drawable *drawable, DPSGState *gstate, DPSContext *context); +typedef void (*DSWUpdateDrawingProc) (Widget w, float *rects, int count); +typedef void (*DSWGetScrollInfoProc) (Widget w, int *h_value, int *h_size, + int *h_max, int *v_value, int *v_size, + int *v_max); + +#if defined(__cplusplus) || defined(c_plusplus) +} +#endif +#endif /* _NO_PROTO */ + +#define InheritSetScale ((DSWSetScaleProc) _XtInherit) +#define InheritScrollPoint ((DSWScrollPointProc) _XtInherit) +#define InheritScrollBy ((DSWScrollByProc) _XtInherit) +#define InheritScrollTo ((DSWScrollToProc) _XtInherit) +#define InheritSetScaleAndScroll ((DSWSetScaleAndScrollProc) _XtInherit) +#define InheritConvertXToPS ((DSWConvertXToPSProc) _XtInherit) +#define InheritConvertPSToX ((DSWConvertPSToXProc) _XtInherit) +#define InheritAddToDirtyArea ((DSWAddToDirtyAreaProc) _XtInherit) +#define InheritTakeFeedbackPixmap ((DSWTakeFeedbackPixmapProc) _XtInherit) +#define InheritGiveFeedbackPixmap ((DSWGiveFeedbackPixmapProc) _XtInherit) +#define InheritStartFeedbackDrawing ((DSWStartFeedbackDrawingProc) _XtInherit) +#define InheritEndFeedbackDrawing ((DSWEndFeedbackDrawingProc) _XtInherit) +#define InheritSetFeedbackDirtyArea ((DSWSetFeedbackDirtyAreaProc) _XtInherit) +#define InheritFinishPendingDrawing ((DSWFinishPendingDrawingProc) _XtInherit) +#define InheritAbortPendingDrawing ((DSWAbortPendingDrawingProc) _XtInherit) +#define InheritGetDrawingInfo ((DSWGetDrawingInfoProc) _XtInherit) +#define InheritUpdateDrawing ((DSWUpdateDrawingProc) _XtInherit) +#define InheritGetScrollInfo ((DSWGetScrollInfoProc) _XtInherit) + +typedef struct { + DSWSetScaleProc set_scale; + DSWScrollPointProc scroll_point; + DSWScrollByProc scroll_by; + DSWScrollToProc scroll_to; + DSWSetScaleAndScrollProc set_scale_and_scroll; + DSWConvertXToPSProc convert_x_to_ps; + DSWConvertPSToXProc convert_ps_to_x; + DSWAddToDirtyAreaProc add_to_dirty_area; + DSWTakeFeedbackPixmapProc take_feedback_pixmap; + DSWGiveFeedbackPixmapProc give_feedback_pixmap; + DSWStartFeedbackDrawingProc start_feedback_drawing; + DSWEndFeedbackDrawingProc end_feedback_drawing; + DSWSetFeedbackDirtyAreaProc set_feedback_dirty_area; + DSWFinishPendingDrawingProc finish_pending_drawing; + DSWAbortPendingDrawingProc abort_pending_drawing; + DSWGetDrawingInfoProc get_drawing_info; + DSWUpdateDrawingProc update_drawing; + DSWGetScrollInfoProc get_scroll_info; + XtPointer extension; +} DPSScrolledWindowClassPart; + +typedef struct _DPSScrolledWindowClassRec { + CoreClassPart core_class; + CompositeClassPart composite_class; + ConstraintClassPart constraint_class; + XmManagerClassPart manager_class; + DPSScrolledWindowClassPart sw_class; +} DPSScrolledWindowClassRec, *DPSScrolledWindowWidgetClass; + +extern DPSScrolledWindowClassRec dpsScrolledWindowClassRec; + +#endif /* _DPSScrolledWindowP_H */ +/* DON'T ADD ANYTHING AFTER THIS #endif */ |