diff options
Diffstat (limited to 'documentation/Fl_Image.html')
| -rw-r--r-- | documentation/Fl_Image.html | 438 |
1 files changed, 316 insertions, 122 deletions
diff --git a/documentation/Fl_Image.html b/documentation/Fl_Image.html index 1287a6113..e0b27db16 100644 --- a/documentation/Fl_Image.html +++ b/documentation/Fl_Image.html @@ -1,142 +1,336 @@ -<head><title>Fl_Image</title></head><body bgcolor=white> - -<h1>class Fl_Image</h1> - -This class holds an image, normally used to label a widget. The -subclasses define how the data is interpreted, and usually store -server-side cached versions of the image. All the current types -define pixel arrays, but other types of images, such as vector -graphics, can be defined. +<HTML><BODY> +<HR break> +<H2><A name=Fl_Input>class Fl_Input</A></H2> +<HR> +<H3>Class Hierarchy</H3> +<UL> +<PRE> +<A href=Fl_Input_.html#Fl_Input_>Fl_Input_</A> + | + +----<B>Fl_Input</B> + | + +----<A href=Fl_Float_Input.html#Fl_Float_Input>Fl_Float_Input</A>, <A href=Fl_Int_Input.html#Fl_Int_Input>Fl_Int_Input</A>, + <A href=Fl_Multiline_Input.html#Fl_Multiline_Input>Fl_Multiline_Input</A>, <A href=Fl_Secret_Input.html#Fl_Secret_Input>Fl_Secret_Input</A> +</PRE> +</UL> +<H3>Include Files</H3> +<UL> +<PRE> +#include <FL/Fl_Input.H> +</PRE> +</UL> +<H3>Description</H3> +<P>This is the FLTK text input widget. It displays a single line of text +and lets the user edit it. Normally it is drawn with an inset box and +a white background. The text may contain any characters (even 0), and +will correctly display anything, using ^X notation for unprintable +control characters and \nnn notation for unprintable characters with +the high bit set. It assumes the font can draw any characters in the +ISO-8859-1 character set. -<h2>Methods</h2> +<CENTER><TABLE border=1 WIDTH=90% summary="Fl_Input keyboard and mouse bindings."> -<h4>ulong id, mask;<br> -void _draw(int X, int Y, int W, int H, int cx, int cy);</h4> +<TR><TD WIDTH=200><B>Mouse button 1</B></TD><TD>Moves the cursor to + this point. Drag selects characters. Double click selects words. + Triple click selects all text. Shift+click extends the selection. + When you select text it is automatically copied to the clipboard. +</TD></TR> -Subclasses may use these <i>protected</i> members of the base class to -draw a cached pixel array. They must first set <tt>id</tt> and -<tt>mask</tt> to the color and transparency offscreen windows, using -system-specific code. Then they can call <tt>_draw()</tt> to draw -them. +<TR><TD><B>Mouse button 2</B></TD><TD>Insert the clipboard at +the point clicked. You can also select a region and replace it with the +clipboard by selecting the region with mouse button 2. +</TD></TR> -<h4>int w,h</h4> +<TR><TD><B>Mouse button 3</B></TD><TD>Currently acts like button 1.</TD></TR> -These members hold the width and height of the image. They are not -correct until <tt>measure()</tt> is called. These are public instance -variables for back comptability, but you should never set them. +<TR><TD><B>Backspace</B></TD><TD>Deletes one character to the left, or +deletes the selected region.</TD></TR> +<TR><TD><B>Enter</B></TD><TD>May cause the callback, see when().</TD></TR> +<TR><TD><B>^A or Home</B></TD><TD>Go to start of line.</TD></TR> +<TR><TD><B>^B or Left</B></TD><TD>Move left</TD></TR> +<TR><TD><B>^C</B></TD><TD>Copy the selection to the clipboard</TD></TR> +<TR><TD><B>^D or Delete</B></TD><TD>Deletes one character to the right +or deletes the selected region.</TD></TR> +<TR><TD><B>^E or End</B></TD><TD>Go to the end of line.</TD></TR> +<TR><TD><B>^F or Right</B></TD><TD>Move right</TD></TR> +<TR><TD><B>^K</B></TD><TD>Delete to the end of line (next \n character) +or deletes a single \n character. These deletions are all concatenated +into the clipboard.</TD></TR> +<TR><TD><B>^N or Down</B></TD><TD>Move down (for Fl_Multiline_Input +only, otherwise it moves to the next input field).</TD></TR> +<TR><TD><B>^P or Up</B></TD><TD>Move up (for Fl_Multiline_Input only, +otherwise it moves to the previous input field).</TD></TR> +<TR><TD><B>^U</B></TD><TD>Delete everything.</TD></TR> +<TR><TD><B>^V or ^Y</B></TD><TD>Paste the clipboard</TD></TR> +<TR><TD><B>^X or ^W</B></TD><TD>Copy the region to the clipboard and +delete it.</TD></TR> +<TR><TD><B>^Z or ^_</B></TD><TD>Undo. This is a single-level undo +mechanism, but all adjacent deletions and insertions are concatenated +into a single "undo". Often this will undo a lot more than you +expected.</TD></TR> +<TR><TD><B>Shift+move</B></TD><TD>Move the cursor but also extend the +selection.</TD></TR> -<h4>virtual void Fl_Image::measure(int W, int H);</h4> +<TR><TD><B>RightCtrl or +<BR>Compose</B></TD><TD><a name=compose>Start</A> +a <A href="events.html#compose">compose-character</A> +sequence. The next one or two keys typed define the character to +insert (see table that follows.) -Measure how big the image will be if it is drawn inside a W,H -rectangle and put the result into w,h. For most image types this does -nothing and w,h are set by the constructor. This may be used to -initialize the scaling for variable-sized images. +<p>For instance, to type "á" type [compose][a]['] or [compose]['][a]. -<h4>virtual void Fl_Image::draw(int x,int y,int w,int h, int cx,int -cy);</h4> +<P>The character "nbsp" (non-breaking space) is typed by using +[compose][space]. -Draw the image so the point <i>cx,cy</i> of the image is at -<i>x,y</i>. The image may be scaled or clipped to fit in the <i>w,h</i> -rectangle, but this is not necessary (although obeying the current -fl_clip value is!). +<P>The single-character sequences may be followed by a space if +necessary to remove ambiguity. For instance, if you really want to +type "ª~" rather than "ã" you must type [compose][a][space][~]. -<h4>void Fl_Image::draw(int x,int y,int w,int h, Fl_Flags align);</h4> +<p>The same key may be used to "quote" control characters into the +text. If you need a <tt>^Q</tt> character you can get one by typing +[compose][Control+Q]. -This <i>non-virtual</i> function uses <tt>measure()</tt> and the -<i>align</i> flags to figure out <i>cx,cy</i> and call the normal draw -function. This allows you to center or align any edge of the image -with a bounding box. +<p>X may have a key on the keyboard +defined as <tt>XK_Multi_key</tt>. If so this key may be used as well +as the right-hand control key. You can set this up with the program +<tt>xmodmap</tt>. -<h4>virtual Fl_Image::~Fl_Image();</h4> +<p>If your keyboard is set to support a foreign language you should +also be able to type "dead key" prefix characters. On X you will +actually be able to see what dead key you typed, and if you then move +the cursor without completing the sequence the accent will remain +inserted. +</TABLE></CENTER> -The destructor throws away any server-cached information, but in most -cases does not destroy the local data passed to a constructor. +<!-- NEW PAGE --> +<center><table border=1 summary="Character Composition Table"> +<caption align="top">Character Composition Table</caption> +<tr> + <th>Keys</th><th>Char</th> + <th>Keys</th><th>Char</th> + <th>Keys</th><th>Char</th> + <th>Keys</th><th>Char</th> + <th>Keys</th><th>Char</th> + <th>Keys</th><th>Char</th> -<H2><A name=Fl_Bitmap>class Fl_Bitmap : public Fl_Image</A></H2> - This object encapsulates the width, height, and bits of an X bitmap -(XBM), and allows you to make an <TT>Fl_Widget</TT> use a bitmap as a -label, or to just draw the bitmap directly. +</tr><tr> + <td align=center><TT>sp</TT></td><td align=center><small>nbsp</small></td> + <td align=center><TT>*</tt></td><td align=center>°</td> + <td align=center><TT>` A</tt></td><td align=center>À</td> + <td align=center><TT>D -</tt></td><td align=center>Ð</td> + <td align=center><TT>` a</tt></td><td align=center>à</td> + <td align=center><TT>d -</tt></td><td align=center>ð +</tr><tr> + <td align=center><TT>!</tt></td><td align=center>¡</td> + <td align=center><TT>+ -</tt></td><td align=center>±</td> + <td align=center><TT>' A</tt></td><td align=center>Á</td> + <td align=center><TT>~ N</tt></td><td align=center>Ñ</td> + <td align=center><TT>' a</tt></td><td align=center>á</td> + <td align=center><TT>~ n</tt></td><td align=center>ñ +</tr><tr> + <td align=center><TT>%</tt></td><td align=center>¢</td> + <td align=center><TT>2</tt></td><td align=center>²</td> + <td align=center><TT>A ^</tt></td><td align=center>Â</td> + <td align=center><TT>` O</tt></td><td align=center>Ò</td> + <td align=center><TT>^ a</tt></td><td align=center>â</td> + <td align=center><TT>` o</tt></td><td align=center>ò +</tr><tr> + <td align=center><TT>#</tt></td><td align=center>£</td> + <td align=center><TT>3</tt></td><td align=center>³</td> + <td align=center><TT>~ A</tt></td><td align=center>Ã</td> + <td align=center><TT>' O</tt></td><td align=center>Ó</td> + <td align=center><TT>~ a</tt></td><td align=center>ã</td> + <td align=center><TT>' o</tt></td><td align=center>ó +</tr><tr> + <td align=center><TT>$</tt></td><td align=center>¤</td> + <td align=center><TT>'</tt></td><td align=center>´</td> + <td align=center><TT>: A</tt></td><td align=center>Ä</td> + <td align=center><TT>^ O</tt></td><td align=center>Ô</td> + <td align=center><TT>: a</tt></td><td align=center>ä</td> + <td align=center><TT>^ o</tt></td><td align=center>ô +</tr><tr> + <td align=center><TT>y =</tt></td><td align=center>¥</td> + <td align=center><TT>u</tt></td><td align=center>µ</td> + <td align=center><TT>* A</tt></td><td align=center>Å</td> + <td align=center><TT>~ O</tt></td><td align=center>Õ</td> + <td align=center><TT>* a</tt></td><td align=center>å</td> + <td align=center><TT>~ o</tt></td><td align=center>õ +</tr><tr> + <td align=center><TT>|</tt></td><td align=center>¦</td> + <td align=center><TT>p</tt></td><td align=center>¶</td> + <td align=center><TT>A E</tt></td><td align=center>Æ</td> + <td align=center><TT>: O</tt></td><td align=center>Ö</td> + <td align=center><TT>a e</tt></td><td align=center>æ</td> + <td align=center><TT>: o</tt></td><td align=center>ö +</tr><tr> + <td align=center><TT>&</tt></td><td align=center>§</td> + <td align=center><TT>.</tt></td><td align=center>·</td> + <td align=center><TT>, C</tt></td><td align=center>Ç</td> + <td align=center><TT>x</tt></td><td align=center>×</td> + <td align=center><TT>, c</tt></td><td align=center>ç</td> + <td align=center><TT>- :</tt></td><td align=center>÷ +</tr><tr> + <td align=center><TT>:</tt></td><td align=center>¨</td> + <td align=center><TT>,</tt></td><td align=center>¸</td> + <td align=center><TT>E `</tt></td><td align=center>È</td> + <td align=center><TT>O /</tt></td><td align=center>Ø</td> + <td align=center><TT>` e</tt></td><td align=center>è</td> + <td align=center><TT>o /</tt></td><td align=center>ø +</tr><tr> + <td align=center><TT>c</tt></td><td align=center>©</td> + <td align=center><TT>1</tt></td><td align=center>¹</td> + <td align=center><TT>' E</tt></td><td align=center>É</td> + <td align=center><TT>` U</tt></td><td align=center>Ù</td> + <td align=center><TT>' e</tt></td><td align=center>é</td> + <td align=center><TT>` u</tt></td><td align=center>ù +</tr><tr> + <td align=center><TT>a</tt></td><td align=center>ª</td> + <td align=center><TT>o</tt></td><td align=center>º</td> + <td align=center><TT>^ E</tt></td><td align=center>Ê</td> + <td align=center><TT>' U</tt></td><td align=center>Ú</td> + <td align=center><TT>^ e</tt></td><td align=center>ê</td> + <td align=center><TT>' u</tt></td><td align=center>ú +</tr><tr> + <td align=center><TT>< <</tt></td><td align=center>«</td> + <td align=center><TT>> ></tt></td><td align=center>»</td> + <td align=center><TT>: E</tt></td><td align=center>Ë</td> + <td align=center><TT>^ U</tt></td><td align=center>Û</td> + <td align=center><TT>: e</tt></td><td align=center>ë</td> + <td align=center><TT>^ u</tt></td><td align=center>û +</tr><tr> + <td align=center><TT>~</tt></td><td align=center>¬</td> + <td align=center><TT>1 4</tt></td><td align=center>¼</td> + <td align=center><TT>` I</tt></td><td align=center>Ì</td> + <td align=center><TT>: U</tt></td><td align=center>Ü</td> + <td align=center><TT>` i</tt></td><td align=center>ì</td> + <td align=center><TT>: u</tt></td><td align=center>ü +</tr><tr> + <td align=center><TT>-</tt></td><td align=center></td> + <td align=center><TT>1 2</tt></td><td align=center>½</td> + <td align=center><TT>' I</tt></td><td align=center>Í</td> + <td align=center><TT>' Y</tt></td><td align=center>Ý</td> + <td align=center><TT>' i</tt></td><td align=center>í</td> + <td align=center><TT>' y</tt></td><td align=center>ý +</tr><tr> + <td align=center><TT>r</tt></td><td align=center>®</td> + <td align=center><TT>3 4</tt></td><td align=center>¾</td> + <td align=center><TT>^ I</tt></td><td align=center>Î</td> + <td align=center><TT>T H</tt></td><td align=center>Þ</td> + <td align=center><TT>^ i</tt></td><td align=center>î</td> + <td align=center><TT>t h</tt></td><td align=center>þ +</tr><tr> + <td align=center><TT>_</tt></td><td align=center>¯</td> + <td align=center><TT>?</tt></td><td align=center>¿</td> + <td align=center><TT>: I</tt></td><td align=center>Ï</td> + <td align=center><TT>s s</tt></td><td align=center>ß</td> + <td align=center><TT>: i</tt></td><td align=center>ï</td> + <td align=center><TT>: y</tt></td><td align=center>ÿ +</table></center> -<H4>Fl_Bitmap(const char *bits, int W, int H) -<BR> Fl_Bitmap(const uchar *bits, int W, int H)</H4> -Construct using an X bitmap. The bits pointer is simply copied to the -object, so it must point at persistent storage. The two constructors -are provided because various X implementations disagree about the type -of bitmap data. To use an XBM file use: +<H3>Methods</H3> +<CENTER> +<TABLE width=90% summary="Fl_Input methods."> +<TR><TD align=left valign=top> <UL> -<PRE> -#include "foo.xbm" -... -Fl_Bitmap bitmap = new Fl_Bitmap(foo_bits, foo_width, foo_height); -</PRE> +<LI><A href=#Fl_Input.Fl_Input>Fl_Input</A></LI> +<LI><A href=#Fl_Input.~Fl_Input>~Fl_Input</A></LI> +<LI><A href=#Fl_Input.cursor_color>cursor_color</A></LI> </UL> -<H4>~Fl_Bitmap()</H4> - The destructor will destroy any X pixmap created. It does not do -anything to the bits data. -<H4>void draw(int x, int y, int w, int h, int ox = 0, int oy = 0)</H4> -1 bits are drawn with the current color, 0 bits -are unchanged. -The image is clipped to the destination rectangle: the area -<TT>ox,oy,w,h</TT> is copied to <TT>x,y,w,h</TT>. -<H4>void draw(int x, int y)</H4> -Draws the bitmap with the upper-left corner at <TT>x,y</TT>. This is -the same as doing <TT>draw(x,y,this->w,this->h,0,0)</TT>. - -<H2><A name=Fl_Pixmap>class Fl_Pixmap : public Fl_Image</A></H2> - -This object encapsulates the data from an XPM image, and allows you to -make an <TT>Fl_Widget</TT> use a pixmap as a label, or to just draw -the pixmap directly. - -<H4>Fl_Pixmap(char *const* data)</H4> - Construct using XPM data. The data pointer is simply copied to the -object, so it must point at persistent storage. To use an XPM file do: +</TD><TD align=left valign=top> <UL> -<PRE> -#include <fltk/Fl_Pixmap.h> -#include "foo.xpm" -... -Fl_Pixmap pixmap = new Fl_Pixmap(foo); -</PRE> +<LI><A href=#Fl_Input.index>index</A></LI> +<LI><A href=#Fl_Input.size>size</A></LI> +</UL> +</TD><TD align=left valign=top> +<UL> +<LI><A href=#Fl_Input.static_value>static_value</A></LI> +<LI><A href=#Fl_Input.textcolor>textcolor</A></LI> +</UL> +</TD><TD align=left valign=top> +<UL> +<LI><A href=#Fl_Input.textfont>textfont</A></LI> +<LI><A href=#Fl_Input.textsize>textsize</A></LI> +</UL> +</TD><TD align=left valign=top> +<UL> +<LI><A href=#Fl_Input.value>value</A></LI> +<LI><A href=#Fl_Input.when>when</A></LI> +</UL> +</TD></TR> +</TABLE> +</CENTER> +<H4><A name=Fl_Input.Fl_Input>Fl_Input::Fl_Input(int x, int y, int w, +int h, const char *label = 0)</A></H4> + Creates a new <TT>Fl_Input</TT> widget using the given position, size, +and label string. The default boxtype is <TT>FL_DOWN_BOX</TT>. +<H4><A name=Fl_Input.~Fl_Input>virtual Fl_Input::~Fl_Input()</A></H4> + Destroys the widget and any value associated with it. +<H4><A name=Fl_Input.value>const char *Fl_Input::value() const +<BR> int Fl_Input::value(const char*) +<BR> int Fl_Input::value(const char*, int)</A></H4> + The first form returns the current value, which is a pointer to the +internal buffer and is valid only until the next event is handled. +<P>The second two forms change the text and set the mark and the point +to the end of it. The string is copied to the internal buffer. Passing <TT> +NULL</TT> is the same as "". This returns non-zero if the new value is +different than the current one. You can use the second version to +directly set the length if you know it already or want to put nul's in +the text. </P> +<H4><A name=Fl_Input.static_value>int Fl_Input::static_value(const +char*) +<BR> int Fl_Input::static_value(const char*, int)</A></H4> + Change the text and set the mark and the point to the end of it. The +string is <I>not</I> copied. If the user edits the string it is copied +to the internal buffer then. This can save a great deal of time and +memory if your program is rapidly changing the values of text fields, +but this will only work if the passed string remains unchanged until +either the <TT>Fl_Input</TT> is destroyed or <TT>value()</TT> is called +again. +<H4><A name=Fl_Input.size>int Fl_Input::size() const</A></H4> + Returns the number of characters in <TT>value()</TT>. This may be +greater than <TT>strlen(value())</TT> if there are nul characters in +it. +<H4><A name=Fl_Input.index>char Fl_Input::index(int) const</A></H4> + Same as <TT>value()[n]</TT>, but may be faster in plausible +implementations. No bounds checking is done. +<H4><A name=Fl_Input.when>Fl_When Fl_Widget::when() const +<BR> void Fl_Widget::when(Fl_When)</A></H4> + Controls when callbacks are done. The following values are useful, +the default value is <TT>FL_WHEN_RELEASE</TT>: +<UL> +<LI><TT>0</TT>: The callback is not done, but <TT>changed()</TT> is + turned on. </LI> +<LI><TT>FL_WHEN_CHANGED</TT>: The callback is done each time the text +is changed by the user. </LI> +<LI><TT>FL_WHEN_RELEASE</TT>: The callback will be done when this +widget loses the focus, including when the window is unmapped. This +is a useful value for text fields in a panel where doing the callback +on every change is wasteful. However the callback will also happen if +the mouse is moved out of the window, which means it should not do +anything visible (like pop up an error message). You might do better +setting this to zero, and scanning all the items for <TT>changed()</TT> + when the OK button on a panel is pressed. </LI> +<LI><TT>FL_WHEN_ENTER_KEY</TT>: If the user types the Enter key, the +entire text is selected, and the callback is done if the text has +changed. Normally the Enter key will navigate to the next field (or +insert a newline for a <TT>Fl_Mulitline_Input</TT>), this changes the +behavior. </LI> +<LI><TT>FL_WHEN_ENTER_KEY|FL_WHEN_NOT_CHANGED</TT>: The Enter key will +do the callback even if the text has not changed. Useful for command +fields. </LI> </UL> -<H4>~Fl_Pixmap()</H4> - The destructor will destroy any X pixmap created. It does not do -anything to the data. - -<H4>void draw(int x, int y, int w, int h, int ox = 0, int oy = 0)</H4> -The image is clipped to the destination rectangle: the area -<TT>ox,oy,w,h</TT> is copied to <TT>x,y,w,h</TT>. The current -implementation converts the pixmap to 24-bit RGB data and uses <A -href=#fl_draw_image><TT>fl_draw_image()</TT></A> to draw it. Thus you -will get dithered colors on an 8 bit screen. </P> - -<H4>void draw(int x, int y)</H4> - Draws the image with the upper-left corner at <TT>x,y</TT>. This is -the same as doing <TT>draw(x,y,this->w,this->h,0,0)</TT>. - -<H2><A name=Fl_RGB_Image>class Fl_RGB_Image</A></H2> - -This object encapsulates a full-color RGB image, and allows you to -make an <TT>Fl_Widget</TT> use an image as a label, or to just draw the -image directly. - -<H4>Fl_RGB_Image(const uchar *data, int W, int H, int D = 3, int LD = 0)</H4> - Construct using a pointer to RGB data. <TT>W</TT> and <TT>H</TT> are -the size of the image in pixels. <TT>D</TT> is the delta between pixels -(it may be more than 3 to skip alpha or other data, or negative to flip -the image left/right). <TT>LD</TT> is the delta between lines (it may -be more than <TT>D * W</TT> to crop images, or negative to flip the -image vertically). The data pointer is simply copied to the object, so -it must point at persistent storage. -<H4>~Fl_RGB_Image()</H4> - The destructor will destroy any X pixmap created. It does not do -anything to the data. -<H4>void draw(int x, int y, int w, int h, int ox = 0, int oy = 0)</H4> -The image is clipped to the destination rectangle: the area -<TT>ox,oy,w,h</TT> is copied to <TT>x,y,w,h</TT>. -<H4>void draw(int x, int y)</H4> - Draws the image with the upper-left corner at <TT>x,y</TT>. This is -the same as doing <TT>draw(x,y,this->w,this->h,0,0)</TT>. - -</body></html> +<H4><A name=Fl_Input.textcolor>Fl_Color Fl_Input::textcolor() const +<BR> void Fl_Input::textcolor(Fl_Color)</A></H4> + Gets or sets the color of the text in the input field. +<H4><A name=Fl_Input.textfont>Fl_Font Fl_Input::textfont() const +<BR> void Fl_Input::textfont(Fl_Font)</A></H4> + Gets or sets the font of the text in the input field. +<H4><A name=Fl_Input.textsize>uchar Fl_Input::textsize() const +<BR> void Fl_Input::textsize(uchar)</A></H4> + Gets or sets the size of the text in the input field. +<H4><A name=Fl_Input.cursor_color>Fl_Color Fl_Input::cursor_color() +const +<BR> void Fl_Input::cursor_color(Fl_Color)</A></H4> + Get or set the color of the cursor. This is black by default. +</BODY></HTML> |
