home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Geek Gadgets 1
/
ADE-1.bin
/
ade-dist
/
fontutils-0.6-base.tgz
/
fontutils-0.6-base.tar
/
fsf
/
fontutils
/
include
/
Bitmap.h
< prev
next >
Wrap
C/C++ Source or Header
|
1992-03-27
|
5KB
|
122 lines
/* Bitmap.h: public header file for a bitmap widget, implemented as a
subclass of Athena's Label widget.
Copyright (C) 1992 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
#ifndef BITMAP_WIDGET_H
#define BITMAP_WIDGET_H
#include "xt-common.h"
#include <X11/Xaw/Label.h>
#include "bitmap.h"
/* Resources (in addition to those in Core, Simple, and Label):
Name Class RepType Default Value
---- ----- ------- -------------
bits Bitmap Pointer NULL
A pointer to a `bitmap_type' structure (see `include/bitmap.h') that
is what is actually displayed. I didn't want to name this resource
`bitmap', since there is already a `bitmap' resource in the Label
widget, and the two are different. (In fact, `bits' becomes the
Label's `bitmap'.)
expansion Expansion Dimension 16
How many times each pixel in the bitmap is replicated.
modified Modified Boolean False
This readonly resource says whether or not the bitmap has been modified.
shadow Bitmap BitmapWidget NULL
A replica of the widget, possibly with a different expansion
(typically, in fact, the shadow bitmap has expansion one). When a
pixel in the widget is changed and repainted via the InvertPixel
action (see the `translations' resource below), the corresponding
pixel in the shadow widget is also changed and repainted.
translations Translations TranslationTable NULL
The event bindings associated with this widget. The Bitmap widget
provides an action `InvertPixel', which inverts the value of the pixel
the pointer is on. `InvertPixel' takes one parameter, which must be
one of the symbols `Discrete' or `Continuous' (case is significant).
In the latter case, the pixel is only changed if the pointer was 1) not
at that same pixel on the last invocation, and 2) on a pixel that is
of the opposite color as the pixel at the time of the last `Discrete'
invocation. Why? Because it is most useful to be able to move the
pointer and change pixels to either black or white, not invert them.
The Bitmap widget also provides two related sets of actions for copying
parts of characters. For the purposes of these actions, imagine that
the ``hot spots'' of each pixel in the large bitmap are at the upper
left of the visible square. StartSelection() begins a selection
operation at the nearest pixel above and to the left of the current
point. AdjustSelection() changes the selected rectangle according to
the nearest pixel below and to the right of the current pixel; the
new point can be in any relationship to the initial point.
AcceptSelection() takes the current selection as the final one.
Once a rectangle has been selected, you can paste it in the same or
another character: StartPaste() shows the selected rectangle and
MovePaste() moves it around. AcceptPaste(Opaque) changes the bitmap
destructively, i.e., each pixel in the selected rectangle overwrites
the pixel in the bitmap. AcceptPaste(Transparent) changes the bitmap
nondestructively, i.e., a black pixel in the bitmap will remain black.
Aside from pasting the selection, you can also fill it:
FillSelection() fills the current selection with the color of the
pixel the pointer is currently on.
To abort any selection or paste operation, simply move the pointer
outside the bitmap before finishing the operation.
By default, no events are bound to the actions. Default bindings
should be put in the app-defaults file.
*/
#ifndef XtCBitmap
#define XtCBitmap "Bitmap"
#endif
#define XtCExpansion "Expansion"
#define XtCModified "Modified"
#define XtNbits "bits"
#define XtNexpansion "expansion"
#define BITMAP_DEFAULT_EXPANSION 16
#define XtNmodified "modified"
#define XtNshadow "shadow"
/* Convenience procedures to get the interesting resources. */
extern unsigned BitmapExpansion (Widget);
extern bitmap_type *BitmapBits (Widget);
extern Boolean BitmapModified (Widget);
/* The class variable, for arguments to XtCreateWidget et al. */
extern WidgetClass bitmapWidgetClass;
/* The class record and instance record types. */
typedef struct _BitmapClassRec *BitmapWidgetClass;
typedef struct _BitmapRec *BitmapWidget;
#endif /* not BITMAP_WIDGET_H */