/* * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The OpenAirInterface Software Alliance licenses this file to You under * the OAI Public License, Version 1.1 (the "License"); you may not use this file * except in compliance with the License. * You may obtain a copy of the License at * * http://www.openairinterface.org/?page_id=698 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *------------------------------------------------------------------------------- * For more information about the OpenAirInterface (OAI) Software Alliance: * contact@openairinterface.org */ /*! \file common/utils/websrv/websrv_noforms.h * \brief: include file to replace forms.h when compiling nr_phy_scope.c for the webserver shared lib * \author Francois TABURET * \date 2022 * \version 0.1 * \company NOKIA BellLabs France * \email: francois.taburet@nokia-bell-labs.com * \note * \warning */ #ifndef FL_FORMS_H #define FL_FORMS_H #define FL_VERSION 1 #define FL_REVISION 2 #define FL_FIXLEVEL "3" #define FL_INCLUDE_VERSION (FL_VERSION * 1000 + FL_REVISION) #include #include #include #include #if defined __cplusplus extern "C" { #endif #if defined _WIN32 #define FL_WIN32 #include #endif typedef void *Window; typedef void *Pixmap; #define FL_EXPORT inline /** * \file Basic.h * * Basic definitions and limits. * Window system independent prototypes * * Modify with care */ #ifndef FL_BASIC_H #define FL_BASIC_H #include #if defined __GNUC__ #define FL_UNUSED_ARG __attribute__((unused)) #else #define FL_UNUSED_ARG #endif /* Some general constants */ typedef int Visual; typedef int XEvent; typedef int *Display; typedef void *Cursor; typedef void *XVisualInfo; typedef void *XFontStruct; typedef void *XPoint; typedef void *XRectangle; typedef int GC; typedef void *Colormap; typedef void *XrmOptionDescRec; #define LineSolid 0 #define LineOnOffDash 1 #define LineDoubleDash 2 typedef struct { int f1; } XSetWindowAttributes; typedef struct { int f1; } Atom; typedef int KeySym; enum { FL_ON = 1, FL_OK = 1, FL_VALID = 1, FL_PREEMPT = 1, FL_AUTO = 2, FL_WHEN_NEEDED = FL_AUTO, FL_OFF = 0, FL_CANCEL = 0, FL_INVALID = 0, /* WM_DELETE_WINDOW callback return */ FL_IGNORE = -1, }; /* Max directory length */ #ifndef FL_PATH_MAX #ifndef PATH_MAX #define FL_PATH_MAX 1024 #else #define FL_PATH_MAX PATH_MAX #endif #endif /* ! def FL_PATH_MAX */ /* The screen coordinate unit, FL_Coord, must be of signed type */ typedef int FL_Coord; #define FL_COORD FL_Coord typedef unsigned long FL_COLOR; /* Coordinates can be in pixels, milli-meters or points (1/72inch) */ typedef enum { FL_COORD_PIXEL, /* default, Pixel */ FL_COORD_MM, /* milli-meter */ FL_COORD_POINT, /* point */ FL_COORD_centiMM, /* one hundredth of a mm */ FL_COORD_centiPOINT /* one hundredth of a point */ } FL_COORD_UNIT; /* All object classes. */ typedef enum { FL_INVALID_CLASS, /* 0 */ FL_BUTTON, /* 1 */ FL_LIGHTBUTTON, /* 2 */ FL_ROUNDBUTTON, /* 3 */ FL_ROUND3DBUTTON, /* 4 */ FL_CHECKBUTTON, /* 5 */ FL_BITMAPBUTTON, /* 6 */ FL_PIXMAPBUTTON, /* 7 */ FL_BITMAP, /* 8 */ FL_PIXMAP, /* 9 */ FL_BOX, /* 10 */ FL_TEXT, /* 11 */ FL_MENU, /* 12 */ FL_CHART, /* 13 */ FL_CHOICE, /* 14 */ FL_COUNTER, /* 15 */ FL_SLIDER, /* 16 */ FL_VALSLIDER, /* 17 */ FL_INPUT, /* 18 */ FL_BROWSER, /* 19 */ FL_DIAL, /* 20 */ FL_TIMER, /* 21 */ FL_CLOCK, /* 22 */ FL_POSITIONER, /* 23 */ FL_FREE, /* 24 */ FL_XYPLOT, /* 25 */ FL_FRAME, /* 26 */ FL_LABELFRAME, /* 27 */ FL_CANVAS, /* 28 */ FL_GLCANVAS, /* 29 */ FL_TABFOLDER, /* 30 */ FL_SCROLLBAR, /* 31 */ FL_SCROLLBUTTON, /* 32 */ FL_MENUBAR, /* 33 */ FL_TEXTBOX, /* 34, for internal use only */ FL_LABELBUTTON, /* 35 */ FL_COMBOBOX, /* 36 */ FL_IMAGECANVAS, /* 37 */ FL_THUMBWHEEL, /* 38 */ FL_COLORWHEEL, /* 39 */ FL_FORMBROWSER, /* 40 */ FL_SELECT, /* 41 */ FL_NMENU, /* 42 */ FL_SPINNER, /* 43 */ FL_TBOX, /* 44 */ FL_CLASS_END /* sentinel */ } FL_CLASS; #define FL_BEGIN_GROUP 10000 #define FL_END_GROUP 20000 #define FL_USER_CLASS_START 1001 /* min. user class value */ #define FL_USER_CLASS_END 9999 /* max. user class value */ /* Maximum border width (in pixel) */ #define FL_MAX_BW 10 /* How to display a form onto screen */ typedef enum { FL_PLACE_FREE = 0, /* size remain resizable */ FL_PLACE_MOUSE = 1, /* mouse centered on form */ FL_PLACE_CENTER = 2, /* center of the screen */ FL_PLACE_POSITION = 4, /* specific position */ FL_PLACE_SIZE = 8, /* specific size */ FL_PLACE_GEOMETRY = 16, /* specific size and position */ FL_PLACE_ASPECT = 32, /* keep aspect ratio */ FL_PLACE_FULLSCREEN = 64, /* scale to fit to screen */ FL_PLACE_HOTSPOT = 128, /* so mouse fall on (x,y) */ FL_PLACE_ICONIC = 256, /* start in iconified form */ /* Modifiers */ FL_FREE_SIZE = (1 << 14), FL_FIX_SIZE = (1 << 15) /* seems to be useless, but some programs seem to rely on it... */ } FL_PLACE; #define FL_PLACE_FREE_CENTER (FL_PLACE_CENTER | FL_FREE_SIZE) #define FL_PLACE_CENTERFREE (FL_PLACE_CENTER | FL_FREE_SIZE) /* Window manager decoration request and forms attributes */ enum { FL_FULLBORDER = 1, /* normal */ FL_TRANSIENT, /* set TRANSIENT_FOR property */ FL_NOBORDER, /* use override_redirect to supress decor. */ }; /* All box types */ typedef enum { FL_NO_BOX, /* 0 */ FL_UP_BOX, /* 1 */ FL_DOWN_BOX, /* 2 */ FL_BORDER_BOX, /* 3 */ FL_SHADOW_BOX, /* 4 */ FL_FRAME_BOX, /* 5 */ FL_ROUNDED_BOX, /* 6 */ FL_EMBOSSED_BOX, /* 7 */ FL_FLAT_BOX, /* 8 */ FL_RFLAT_BOX, /* 9 */ FL_RSHADOW_BOX, /* 10 */ FL_OVAL_BOX, /* 11 */ FL_ROUNDED3D_UPBOX, /* 12 */ FL_ROUNDED3D_DOWNBOX, /* 13 */ FL_OVAL3D_UPBOX, /* 14 */ FL_OVAL3D_DOWNBOX, /* 15 */ FL_OVAL3D_FRAMEBOX, /* 16 */ FL_OVAL3D_EMBOSSEDBOX, /* 17 */ /* for internal use only */ FL_TOPTAB_UPBOX, FL_SELECTED_TOPTAB_UPBOX, FL_BOTTOMTAB_UPBOX, FL_SELECTED_BOTTOMTAB_UPBOX, FL_MAX_BOX_STYLES /* sentinel */ } FL_BOX_TYPE; #define FL_IS_UPBOX(t) ((t) == FL_UP_BOX || (t) == FL_OVAL3D_UPBOX || (t) == FL_ROUNDED3D_UPBOX) #define FL_IS_DOWNBOX(t) ((t) == FL_DOWN_BOX || (t) == FL_OVAL3D_DOWNBOX || (t) == FL_ROUNDED3D_DOWNBOX) #define FL_TO_DOWNBOX(t) ((t) == FL_UP_BOX ? FL_DOWN_BOX : ((t) == FL_ROUNDED3D_UPBOX ? FL_ROUNDED3D_DOWNBOX : ((t) == FL_OVAL3D_UPBOX ? FL_OVAL3D_DOWNBOX : (t)))) /* How to place text relative to a box */ typedef enum { FL_ALIGN_CENTER, FL_ALIGN_TOP = 1, FL_ALIGN_BOTTOM = 2, FL_ALIGN_LEFT = 4, FL_ALIGN_RIGHT = 8, FL_ALIGN_LEFT_TOP = (FL_ALIGN_TOP | FL_ALIGN_LEFT), FL_ALIGN_RIGHT_TOP = (FL_ALIGN_TOP | FL_ALIGN_RIGHT), FL_ALIGN_LEFT_BOTTOM = (FL_ALIGN_BOTTOM | FL_ALIGN_LEFT), FL_ALIGN_RIGHT_BOTTOM = (FL_ALIGN_BOTTOM | FL_ALIGN_RIGHT), FL_ALIGN_INSIDE = (1 << 13), FL_ALIGN_VERT = (1 << 14), /* not functional yet */ /* the rest is for backward compatibility only, don't use! */ FL_ALIGN_TOP_LEFT = FL_ALIGN_LEFT_TOP, FL_ALIGN_TOP_RIGHT = FL_ALIGN_RIGHT_TOP, FL_ALIGN_BOTTOM_LEFT = FL_ALIGN_LEFT_BOTTOM, FL_ALIGN_BOTTOM_RIGHT = FL_ALIGN_RIGHT_BOTTOM } FL_ALIGN; FL_EXPORT int fl_is_inside_lalign(int align) { return 0; }; FL_EXPORT int fl_is_outside_lalign(int align) { return 0; }; FL_EXPORT int fl_is_center_lalign(int align) { return 0; }; FL_EXPORT int fl_to_inside_lalign(int align) { return 0; }; FL_EXPORT int fl_to_outside_lalign(int align) { return 0; }; /* Mouse buttons. Don't have to be consecutive */ enum { FL_MBUTTON1 = 1, FL_MBUTTON2, FL_MBUTTON3, FL_MBUTTON4, FL_MBUTTON5 }; #define FL_LEFT_MOUSE FL_MBUTTON1 #define FL_MIDDLE_MOUSE FL_MBUTTON2 #define FL_RIGHT_MOUSE FL_MBUTTON3 #define FL_SCROLLUP_MOUSE FL_MBUTTON4 #define FL_SCROLLDOWN_MOUSE FL_MBUTTON5 #define FL_LEFTMOUSE FL_LEFT_MOUSE #define FL_MIDDLEMOUSE FL_MIDDLE_MOUSE #define FL_RIGHTMOUSE FL_RIGHT_MOUSE #define FL_SCROLLUPMOUSE FL_SCROLLUP_MOUSE #define FL_SCROLLDOWNMOUSE FL_SCROLLDOWN_MOUSE /* control when to return input, slider and dial etc. object. */ #define FL_RETURN_NONE 0U #define FL_RETURN_CHANGED 1U #define FL_RETURN_END 2U #define FL_RETURN_END_CHANGED 4U #define FL_RETURN_SELECTION 8U #define FL_RETURN_DESELECTION 16U #define FL_RETURN_TRIGGERED 1024U #define FL_RETURN_ALWAYS (~FL_RETURN_END_CHANGED) /* Some special color indices for FL private colormap. It does not matter * what the value of each enum is, but it must start from 0 and be * consecutive. */ typedef enum { FL_BLACK, FL_RED, FL_GREEN, FL_YELLOW, FL_BLUE, FL_MAGENTA, FL_CYAN, FL_WHITE, FL_TOMATO, FL_INDIANRED, FL_SLATEBLUE, FL_COL1, FL_RIGHT_BCOL, FL_BOTTOM_BCOL, FL_TOP_BCOL, FL_LEFT_BCOL, FL_MCOL, FL_INACTIVE, FL_PALEGREEN, FL_DARKGOLD, FL_ORCHID, FL_DARKCYAN, FL_DARKTOMATO, FL_WHEAT, FL_DARKORANGE, FL_DEEPPINK, FL_CHARTREUSE, FL_DARKVIOLET, FL_SPRINGGREEN, FL_DODGERBLUE, FL_LIGHTER_COL1, FL_DARKER_COL1, FL_ALICEBLUE, FL_ANTIQUEWHITE, FL_AQUA, FL_AQUAMARINE, FL_AZURE, FL_BEIGE, FL_BISQUE, FL_BLANCHEDALMOND, FL_BLUEVIOLET, FL_BROWN, FL_BURLYWOOD, FL_CADETBLUE, FL_CHOCOLATE, FL_CORAL, FL_CORNFLOWERBLUE, FL_CORNSILK, FL_CRIMSON, FL_DARKBLUE, FL_DARKGOLDENROD, FL_DARKGRAY, FL_DARKGREEN, FL_DARKGREY, FL_DARKKHAKI, FL_DARKMAGENTA, FL_DARKOLIVEGREEN, FL_DARKORCHID, FL_DARKRED, FL_DARKSALMON, FL_DARKSEAGREEN, FL_DARKSLATEBLUE, FL_DARKSLATEGRAY, FL_DARKSLATEGREY, FL_DARKTURQUOISE, FL_DEEPSKYBLUE, FL_DIMGRAY, FL_DIMGREY, FL_FIREBRICK, FL_FLORALWHITE, FL_FORESTGREEN, FL_FUCHSIA, FL_GAINSBORO, FL_GHOSTWHITE, FL_GOLD, FL_GOLDENROD, FL_GRAY, FL_GREENYELLOW, FL_GREY, FL_HONEYDEW, FL_HOTPINK, FL_INDIGO, FL_IVORY, FL_KHAKI, FL_LAVENDER, FL_LAVENDERBLUSH, FL_LAWNGREEN, FL_LEMONCHIFFON, FL_LIGHTBLUE, FL_LIGHTCORAL, FL_LIGHTCYAN, FL_LIGHTGOLDENRODYELLOW, FL_LIGHTGRAY, FL_LIGHTGREEN, FL_LIGHTGREY, FL_LIGHTPINK, FL_LIGHTSALMON, FL_LIGHTSEAGREEN, FL_LIGHTSKYBLUE, FL_LIGHTSLATEGRAY, FL_LIGHTSLATEGREY, FL_LIGHTSTEELBLUE, FL_LIGHTYELLOW, FL_LIME, FL_LIMEGREEN, FL_LINEN, FL_MAROON, FL_MEDIUMAQUAMARINE, FL_MEDIUMBLUE, FL_MEDIUMORCHID, FL_MEDIUMPURPLE, FL_MEDIUMSEAGREEN, FL_MEDIUMSLATEBLUE, FL_MEDIUMSPRINGGREEN, FL_MEDIUMTURQUOISE, FL_MEDIUMVIOLETRED, FL_MIDNIGHTBLUE, FL_MINTCREAM, FL_MISTYROSE, FL_MOCCASIN, FL_NAVAJOWHITE, FL_NAVY, FL_OLDLACE, FL_OLIVE, FL_OLIVEDRAB, FL_ORANGE, FL_ORANGERED, FL_PALEGOLDENROD, FL_PALETURQUOISE, FL_PALEVIOLETRED, FL_PAPAYAWHIP, FL_PEACHPUFF, FL_PERU, FL_PINK, FL_PLUM, FL_POWDERBLUE, FL_PURPLE, FL_ROSYBROWN, FL_ROYALBLUE, FL_SADDLEBROWN, FL_SALMON, FL_SANDYBROWN, FL_SEAGREEN, FL_SEASHELL, FL_SIENNA, FL_SILVER, FL_SKYBLUE, FL_SLATEGRAY, FL_SLATEGREY, FL_SNOW, FL_STEELBLUE, FL_TAN, FL_TEAL, FL_THISTLE, FL_TURQUOISE, FL_VIOLET, FL_WHITESMOKE, FL_YELLOWGREEN, FL_FREE_COL1 = 256, FL_FREE_COL2, FL_FREE_COL3, FL_FREE_COL4, FL_FREE_COL5, FL_FREE_COL6, FL_FREE_COL7, FL_FREE_COL8, FL_FREE_COL9, FL_FREE_COL10, FL_FREE_COL11, FL_FREE_COL12, FL_FREE_COL13, FL_FREE_COL14, FL_FREE_COL15, FL_FREE_COL16, FL_NOCOLOR = INT_MAX } FL_PD_COL; #define FL_BUILT_IN_COLS (FL_YELLOWGREEN + 1) #define FL_INACTIVE_COL FL_INACTIVE /* Some aliases for a number of colors */ #define FL_GRAY16 FL_RIGHT_BCOL #define FL_GRAY35 FL_BOTTOM_BCOL #define FL_GRAY80 FL_TOP_BCOL #define FL_GRAY90 FL_LEFT_BCOL #define FL_GRAY63 FL_COL1 #define FL_GRAY75 FL_MCOL #define FL_LCOL FL_BLACK #define FL_NoColor FL_NOCOLOR /* An alias probably for an earlier typo */ #define FL_DOGERBLUE FL_DODGERBLUE /* Events that a form reacts to */ typedef enum { FL_NOEVENT, /* 0 No event */ FL_DRAW, /* 1 object is asked to redraw itself */ FL_PUSH, /* 2 mouse button was pressed on the object */ FL_RELEASE, /* 3 mouse button was release gain */ FL_ENTER, /* 4 mouse entered the object */ FL_LEAVE, /* 5 mouse left the object */ FL_MOTION, /* 6 mouse motion over the object happend */ FL_FOCUS, /* 7 object obtained focus */ FL_UNFOCUS, /* 8 object lost focus */ FL_KEYPRESS, /* 9 key was pressed while object has focus */ FL_UPDATE, /* 10 for objects that need to update something from time to time */ FL_STEP, /* 11 */ FL_SHORTCUT, /* 12 */ FL_FREEMEM, /* 13 object is asked to free all its memory */ FL_OTHER, /* 14 property, selection etc */ FL_DRAWLABEL, /* 15 */ FL_DBLCLICK, /* 16 double click on object */ FL_TRPLCLICK, /* 17 triple click on object */ FL_ATTRIB, /* 18 an object attribute changed */ FL_KEYRELEASE, /* 19 key was released while object has focus */ FL_PS, /* 20 dump a form into EPS */ FL_MOVEORIGIN, /* 21 dragging the form across the screen changes its absolute x,y coords. Objects that themselves contain forms should ensure that they are up to date. */ FL_RESIZED, /* 22 the object has been resized by scale_form Tell it that this has happened so that it can resize any FL_FORMs that it contains. */ FL_PASTE, /* 23 text was pasted into input object */ FL_TRIGGER, /* 24 result of fl_trigger_object() */ /* The following are only for backward compatibility, not used anymore */ FL_MOVE = FL_MOTION, FL_KEYBOARD = FL_KEYPRESS, FL_MOUSE = FL_UPDATE } FL_EVENTS; /* Resize policies */ typedef enum { FL_RESIZE_NONE, FL_RESIZE_X, FL_RESIZE_Y, FL_RESIZE_ALL = (FL_RESIZE_X | FL_RESIZE_Y) } FL_RESIZE_T; /* Keyboard focus control */ typedef enum { FL_KEY_NORMAL = 1, /* normal keys(0-255) - tab +left/right */ FL_KEY_TAB = 2, /* normal keys + 4 direction cursor */ FL_KEY_SPECIAL = 4, /* only needs special keys (>255) */ FL_KEY_ALL = 7 /* all keys */ } FL_KEY; #define FL_ALT_MASK (1L << 25) /* alt + Key --> FL_ALT_MASK + key */ #define FL_CONTROL_MASK (1L << 26) #define FL_SHIFT_MASK (1L << 27) #define FL_ALT_VAL FL_ALT_MASK /* Don' use! */ #define MAX_SHORTCUTS 8 /* Pop-up menu item attributes. NOTE if more than 8, need to change * choice and menu class where mode is kept by a single byte */ enum { FL_PUP_NONE, FL_PUP_GREY = 1, FL_PUP_BOX = 2, FL_PUP_CHECK = 4, FL_PUP_RADIO = 8 }; #define FL_PUP_GRAY FL_PUP_GREY #define FL_PUP_TOGGLE FL_PUP_BOX /* not used anymore */ #define FL_PUP_INACTIVE FL_PUP_GREY /* Popup and menu entries */ typedef int (*FL_PUP_CB)(int); /* callback prototype */ typedef struct { const char *text; /* label of a popup/menu item */ FL_PUP_CB callback; /* the callback function */ const char *shortcut; /* hotkeys */ int mode; /* FL_PUP_GRAY, FL_PUP_CHECK etc */ } FL_PUP_ENTRY; #define FL_MENU_ENTRY FL_PUP_ENTRY /******************************************************************* * FONTS ******************************************************************/ #define FL_MAXFONTS 48 /* max number of fonts */ typedef enum { FL_INVALID_STYLE = -1, FL_NORMAL_STYLE, FL_BOLD_STYLE, FL_ITALIC_STYLE, FL_BOLDITALIC_STYLE, FL_FIXED_STYLE, FL_FIXEDBOLD_STYLE, FL_FIXEDITALIC_STYLE, FL_FIXEDBOLDITALIC_STYLE, FL_TIMES_STYLE, FL_TIMESBOLD_STYLE, FL_TIMESITALIC_STYLE, FL_TIMESBOLDITALIC_STYLE, FL_MISC_STYLE, FL_MISCBOLD_STYLE, FL_MISCITALIC_STYLE, FL_SYMBOL_STYLE, /* modfier masks. Need to fit a short */ FL_SHADOW_STYLE = (1 << 9), FL_ENGRAVED_STYLE = (1 << 10), FL_EMBOSSED_STYLE = (1 << 11) } FL_TEXT_STYLE; #define FL_FONT_STYLE FL_TEXT_STYLE #define special_style(a) ((a) >= FL_SHADOW_STYLE && (a) <= (FL_EMBOSSED_STYLE + FL_MAXFONTS)) /* Standard sizes in XForms */ #define FL_TINY_SIZE 8 #define FL_SMALL_SIZE 10 #define FL_NORMAL_SIZE 12 #define FL_MEDIUM_SIZE 14 #define FL_LARGE_SIZE 18 #define FL_HUGE_SIZE 24 #define FL_DEFAULT_SIZE FL_SMALL_SIZE /* Defines for compatibility */ #define FL_TINY_FONT FL_TINY_SIZE #define FL_SMALL_FONT FL_SMALL_SIZE #define FL_NORMAL_FONT FL_NORMAL_SIZE #define FL_MEDIUM_FONT FL_MEDIUM_SIZE #define FL_LARGE_FONT FL_LARGE_SIZE #define FL_HUGE_FONT FL_HUGE_SIZE #define FL_NORMAL_FONT1 FL_SMALL_FONT #define FL_NORMAL_FONT2 FL_NORMAL_FONT #define FL_DEFAULT_FONT FL_SMALL_FONT #define FL_BOUND_WIDTH (FL_Coord)1 /* Border width of boxes */ /* Definition of basic struct that holds an object */ #define FL_CLICK_TIMEOUT 400 /* double click interval */ typedef struct FL_FORM_ FL_FORM; typedef struct FL_OBJECT_ FL_OBJECT; typedef struct FL_pixmap_ FL_pixmap; struct FL_OBJECT_ { FL_FORM *form; /* the form this object belongs to */ void *u_vdata; /* anything the user likes */ char *u_cdata; /* anything the user likes */ long u_ldata; /* anything the user likes */ int objclass; /* class of object, button, slider etc */ int type; /* type within the class */ int boxtype; /* what kind of box type */ FL_Coord x, /* current obj. location and size */ y, w, h; double fl1, /* distances of upper left hand (1) and */ fr1, /* lower right hand corner (2) to left, */ ft1, /* right, top and bottom of enclosing */ fb1, /* form */ fl2, fr2, ft2, fb2; FL_Coord bw; FL_COLOR col1, /* colors of obj */ col2; char *label; /* object label */ FL_COLOR lcol; /* label color */ int align; int lsize, /* label size and style */ lstyle; long *shortcut; int (*handle)(FL_OBJECT *, int, FL_Coord, FL_Coord, int, void *); void (*object_callback)(FL_OBJECT *, long); long argument; void *spec; /* instantiation */ int (*prehandle)(FL_OBJECT *, int, FL_Coord, FL_Coord, int, void *); int (*posthandle)(FL_OBJECT *, int, FL_Coord, FL_Coord, int, void *); void (*set_return)(FL_OBJECT *, unsigned int); /* Re-configure preference */ unsigned int resize; /* what to do if WM resizes the FORM */ unsigned int nwgravity; /* how to re-position top-left corner */ unsigned int segravity; /* how to re-position lower-right corner */ FL_OBJECT *prev; /* prev. obj in form */ FL_OBJECT *next; /* next. obj in form */ FL_OBJECT *parent; FL_OBJECT *child; FL_OBJECT *nc; /* next child */ FL_pixmap *flpixmap; /* pixmap double buffering stateinfo */ int use_pixmap; /* true to use pixmap double buffering*/ /* Some interaction flags */ int returned; /* what last interaction returned */ unsigned int how_return; /* under which conditions to return */ int double_buffer; /* only used by mesa/gl canvas */ int pushed; int focus; int belowmouse; int active; /* if object accepts events */ int input; int wantkey; int radio; int automatic; int redraw; int visible; int is_under; /* if (partially) hidden by other object */ int clip; unsigned long click_timeout; void *c_vdata; /* for class use */ char *c_cdata; /* for class use */ long c_ldata; /* for class use */ FL_COLOR dbl_background; /* double buffer background */ char *tooltip; int tipID; int group_id; int want_motion; int want_update; }; /* Callback function for an entire form */ typedef void (*FL_FORMCALLBACKPTR)(FL_OBJECT *, void *); /* Object callback function */ typedef void (*FL_CALLBACKPTR)(FL_OBJECT *, long); /* Preemptive callback function */ typedef int (*FL_RAW_CALLBACK)(FL_FORM *, void *); /* At close (WM menu delete/close etc.) function */ typedef int (*FL_FORM_ATCLOSE)(FL_FORM *, void *); /* Deactivate/activate callback */ typedef void (*FL_FORM_ATDEACTIVATE)(FL_FORM *, void *); typedef void (*FL_FORM_ATACTIVATE)(FL_FORM *, void *); typedef int (*FL_HANDLEPTR)(FL_OBJECT *, int, FL_Coord, FL_Coord, int, void *); /* Error callback */ typedef void (*FL_ERROR_FUNC)(const char *, const char *, ...); __attribute__((unused)) static FL_OBJECT *FL_EVENT; /*** FORM ****/ /* Form visibility state: form->visible */ enum { FL_BEING_HIDDEN = -1, FL_HIDDEN = 0, FL_INVISIBLE = FL_HIDDEN, FL_VISIBLE = 1 }; struct FL_FORM_ { void *fdui; /* for fdesign */ void *u_vdata; /* for application */ char *u_cdata; /* for application */ long u_ldata; /* for application */ char *label; /* window title */ Window window; /* X resource ID for window */ FL_Coord x, /* current geometry info */ y, w, h; int handle_dec_x, handle_dec_y; FL_Coord hotx, /* hot-spot of the form */ hoty; double w_hr, /* high resolution width and height */ h_hr; /* (needed for precise scaling) */ FL_OBJECT *first; FL_OBJECT *last; FL_OBJECT *focusobj; FL_FORMCALLBACKPTR form_callback; FL_FORM_ATACTIVATE activate_callback; FL_FORM_ATDEACTIVATE deactivate_callback; void *form_cb_data; void *activate_data; void *deactivate_data; FL_RAW_CALLBACK key_callback; FL_RAW_CALLBACK push_callback; FL_RAW_CALLBACK crossing_callback; FL_RAW_CALLBACK motion_callback; FL_RAW_CALLBACK all_callback; unsigned long compress_mask; unsigned long evmask; /* WM_DELETE_WINDOW message handler */ FL_FORM_ATCLOSE close_callback; void *close_data; FL_pixmap *flpixmap; /* back buffer */ Pixmap icon_pixmap; Pixmap icon_mask; /* Interaction and other flags */ int deactivated; /* non-zero if deactivated */ int use_pixmap; /* true if dbl buffering */ int frozen; /* true if sync change */ int visible; /* true if mapped */ int wm_border; /* window manager info */ unsigned int prop; /* other attributes */ int num_auto_objects; int needs_full_redraw; int sort_of_modal; /* internal use */ FL_FORM *parent; FL_FORM *child; FL_OBJECT *parent_obj; int attached; /* not independent anymore */ void (*pre_attach)(FL_FORM *); void *attach_data; int in_redraw; }; /* All FD_xxx structure emitted by fdesign contains at least the * following */ typedef struct { FL_FORM *form; void *vdata; char *cdata; long ldata; } FD_Any; /* Async IO stuff */ enum { FL_READ = 1, FL_WRITE = 2, FL_EXCEPT = 4 }; /* IO other than XEvent Q */ typedef void (*FL_IO_CALLBACK)(int, void *); FL_EXPORT void fl_add_io_callback(int fd, unsigned int mask, FL_IO_CALLBACK callback, void *data){}; FL_EXPORT void fl_remove_io_callback(int fd, unsigned int mask, FL_IO_CALLBACK cb){}; /* signals */ typedef void (*FL_SIGNAL_HANDLER)(int, void *); FL_EXPORT void fl_add_signal_callback(int s, FL_SIGNAL_HANDLER cb, void *data){}; FL_EXPORT void fl_remove_signal_callback(int s){}; FL_EXPORT void fl_signal_caught(int s){}; FL_EXPORT void fl_app_signal_direct(int y){}; enum { FL_INPUT_END_EVENT_CLASSIC = 0, FL_INPUT_END_EVENT_ALWAYS = 1 }; FL_EXPORT int fl_input_end_return_handling(int type) { return 0; }; /** Generic routines that deal with FORMS **/ FL_EXPORT FL_FORM *fl_bgn_form(int type, FL_Coord w, FL_Coord h) { return NULL; }; FL_EXPORT void fl_end_form(void){}; FL_EXPORT FL_OBJECT *fl_do_forms(void) { return NULL; }; FL_EXPORT FL_OBJECT *fl_check_forms(void) { return NULL; }; FL_EXPORT FL_OBJECT *fl_do_only_forms(void) { return NULL; }; FL_EXPORT FL_OBJECT *fl_check_only_forms(void) { return NULL; }; FL_EXPORT void fl_freeze_form(FL_FORM *form){}; FL_EXPORT void fl_set_focus_object(FL_FORM *form, FL_OBJECT *obj){}; FL_EXPORT FL_OBJECT *fl_get_focus_object(FL_FORM *form) { return NULL; }; FL_EXPORT void fl_reset_focus_object(FL_OBJECT *ob){}; #define fl_set_object_focus fl_set_focus_object FL_EXPORT FL_FORM_ATCLOSE fl_set_form_atclose(FL_FORM *form, FL_FORM_ATCLOSE fmclose, void *data){}; FL_EXPORT FL_FORM_ATCLOSE fl_set_atclose(FL_FORM_ATCLOSE fmclose, void *data){}; FL_EXPORT FL_FORM_ATACTIVATE fl_set_form_atactivate(FL_FORM *form, FL_FORM_ATACTIVATE cb, void *data){}; FL_EXPORT FL_FORM_ATDEACTIVATE fl_set_form_atdeactivate(FL_FORM *form, FL_FORM_ATDEACTIVATE cb, void *data){}; FL_EXPORT void fl_unfreeze_form(FL_FORM *form){}; FL_EXPORT int fl_form_is_activated(FL_FORM *form){}; FL_EXPORT void fl_deactivate_form(FL_FORM *form){}; FL_EXPORT void fl_activate_form(FL_FORM *form){}; FL_EXPORT void fl_deactivate_all_forms(void){}; FL_EXPORT void fl_activate_all_forms(void){}; FL_EXPORT void fl_freeze_all_forms(void){}; FL_EXPORT void fl_unfreeze_all_forms(void){}; FL_EXPORT void fl_scale_form(FL_FORM *form, double xsc, double ysc){}; FL_EXPORT void fl_set_form_position(FL_FORM *form, FL_Coord x, FL_Coord y){}; FL_EXPORT void fl_set_form_title(FL_FORM *form, const char *name){}; FL_EXPORT void fl_set_form_title_f(FL_FORM *form, const char *fmt, ...){}; FL_EXPORT void fl_set_app_mainform(FL_FORM *form){}; FL_EXPORT FL_FORM *fl_get_app_mainform(void) { return NULL; }; FL_EXPORT void fl_set_app_nomainform(int flag){}; FL_EXPORT void fl_set_form_callback(FL_FORM *form, FL_FORMCALLBACKPTR callback, void *d){}; #define fl_set_form_call_back fl_set_form_callback FL_EXPORT void fl_set_form_size(FL_FORM *form, FL_Coord w, FL_Coord h){}; FL_EXPORT void fl_set_form_background_color(FL_FORM *form, FL_COLOR color){}; FL_EXPORT FL_COLOR fl_get_form_background_color(FL_FORM *form){}; FL_EXPORT void fl_set_form_hotspot(FL_FORM *form, FL_Coord x, FL_Coord y){}; FL_EXPORT void fl_set_form_hotobject(FL_FORM *form, FL_OBJECT *ob){}; FL_EXPORT void fl_set_form_minsize(FL_FORM *form, FL_Coord w, FL_Coord h){}; FL_EXPORT void fl_set_form_maxsize(FL_FORM *form, FL_Coord w, FL_Coord h){}; FL_EXPORT void fl_set_form_event_cmask(FL_FORM *form, unsigned long cmask){}; FL_EXPORT unsigned long fl_get_form_event_cmask(FL_FORM *form){}; FL_EXPORT void fl_set_form_geometry(FL_FORM *form, FL_Coord x, FL_Coord y, FL_Coord w, FL_Coord h){}; #define fl_set_initial_placement fl_set_form_geometry FL_EXPORT Window fl_show_form(FL_FORM *form, int place, int border, const char *name) { return NULL; }; FL_EXPORT Window fl_show_form_f(FL_FORM *form, int place, int border, const char *fmt, ...) { return NULL; }; FL_EXPORT void fl_hide_form(FL_FORM *form){}; FL_EXPORT void fl_free_form(FL_FORM *form){}; FL_EXPORT void fl_redraw_form(FL_FORM *form){}; FL_EXPORT void fl_set_form_dblbuffer(FL_FORM *form, int y){}; FL_EXPORT Window fl_prepare_form_window(FL_FORM *form, int place, int border, const char *name) { return NULL; }; FL_EXPORT Window fl_prepare_form_window_f(FL_FORM *form, int place, int border, const char *fmt, ...) { return NULL; }; FL_EXPORT Window fl_show_form_window(FL_FORM *form) { return NULL; }; FL_EXPORT double fl_adjust_form_size(FL_FORM *form) { return 0; }; FL_EXPORT int fl_form_is_visible(FL_FORM *form) { return 0; }; FL_EXPORT int fl_form_is_iconified(FL_FORM *form) { return 0; }; FL_EXPORT FL_RAW_CALLBACK fl_register_raw_callback(FL_FORM *form, unsigned long mask, FL_RAW_CALLBACK rcb){}; #define fl_register_call_back fl_register_raw_callback FL_EXPORT FL_OBJECT *fl_bgn_group(void) { return NULL; }; FL_EXPORT void fl_end_group(void){}; FL_EXPORT FL_OBJECT *fl_addto_group(FL_OBJECT *group) { return NULL; }; /****** Routines that deal with FL_OBJECTS ********/ FL_EXPORT int fl_get_object_objclass(FL_OBJECT *obj) { return 0; }; FL_EXPORT int fl_get_object_type(FL_OBJECT *obj) { return 0; }; FL_EXPORT void fl_set_object_boxtype(FL_OBJECT *ob, int boxtype){}; FL_EXPORT int fl_get_object_boxtype(FL_OBJECT *obj) { return 0; }; FL_EXPORT void fl_set_object_bw(FL_OBJECT *ob, int bw){}; FL_EXPORT int fl_get_object_bw(FL_OBJECT *ob) { return 0; }; FL_EXPORT void fl_set_object_resize(FL_OBJECT *ob, unsigned int what){}; FL_EXPORT void fl_get_object_resize(FL_OBJECT *ob, unsigned int *what){}; FL_EXPORT void fl_set_object_gravity(FL_OBJECT *ob, unsigned int nw, unsigned int se){}; FL_EXPORT void fl_get_object_gravity(FL_OBJECT *ob, unsigned int *nw, unsigned int *se){}; FL_EXPORT void fl_set_object_lsize(FL_OBJECT *obj, int lsize){}; FL_EXPORT int fl_get_object_lsize(FL_OBJECT *obj){}; FL_EXPORT void fl_set_object_lstyle(FL_OBJECT *obj, int lstyle){}; FL_EXPORT int fl_get_object_lstyle(FL_OBJECT *obj) { return 0; }; FL_EXPORT void fl_set_object_lcol(FL_OBJECT *ob, FL_COLOR lcol){}; FL_EXPORT FL_COLOR fl_get_object_lcol(FL_OBJECT *obj){}; FL_EXPORT int fl_set_object_return(FL_OBJECT *ob, unsigned int when){}; FL_EXPORT void fl_set_object_lalign(FL_OBJECT *obj, int align){}; FL_EXPORT int fl_get_object_lalign(FL_OBJECT *obj) { return 0; }; FL_EXPORT void fl_set_object_shortcut(FL_OBJECT *obj, const char *sstr, int showit){}; FL_EXPORT void fl_set_object_shortcutkey(FL_OBJECT *obj, unsigned int keysym){}; FL_EXPORT void fl_set_object_dblbuffer(FL_OBJECT *ob, int y){}; FL_EXPORT void fl_set_object_color(FL_OBJECT *ob, FL_COLOR col1, FL_COLOR col2){}; FL_EXPORT void fl_get_object_color(FL_OBJECT *obj, FL_COLOR *col1, FL_COLOR *col2){}; FL_EXPORT void fl_set_object_label(FL_OBJECT *ob, const char *label){}; FL_EXPORT void fl_set_object_label_f(FL_OBJECT *obj, const char *fmt, ...){}; FL_EXPORT const char *fl_get_object_label(FL_OBJECT *obj) { return NULL; }; FL_EXPORT void fl_set_object_helper(FL_OBJECT *ob, const char *tip){}; FL_EXPORT void fl_set_object_helper_f(FL_OBJECT *ob, const char *fmt, ...){}; FL_EXPORT void fl_set_object_position(FL_OBJECT *obj, FL_Coord x, FL_Coord y){}; FL_EXPORT void fl_get_object_size(FL_OBJECT *obj, FL_Coord *w, FL_Coord *h){}; FL_EXPORT void fl_set_object_size(FL_OBJECT *obj, FL_Coord w, FL_Coord h){}; FL_EXPORT void fl_set_object_automatic(FL_OBJECT *obj, int flag){}; FL_EXPORT int fl_object_is_automatic(FL_OBJECT *obj){}; FL_EXPORT void fl_draw_object_label(FL_OBJECT *ob){}; FL_EXPORT void fl_draw_object_label_outside(FL_OBJECT *ob){}; FL_EXPORT FL_OBJECT *fl_get_object_component(FL_OBJECT *composite, int objclass, int type, int numb) { return NULL; }; FL_EXPORT void fl_for_all_objects(FL_FORM *form, int (*cb)(FL_OBJECT *, void *), void *v){}; #define fl_draw_object_outside_label fl_draw_object_label_outside FL_EXPORT void fl_set_object_dblclick(FL_OBJECT *obj, unsigned long timeout){}; FL_EXPORT unsigned long fl_get_object_dblclick(FL_OBJECT *obj) { return 0; }; FL_EXPORT void fl_set_object_geometry(FL_OBJECT *obj, FL_Coord x, FL_Coord y, FL_Coord w, FL_Coord h){}; FL_EXPORT void fl_move_object(FL_OBJECT *obj, FL_Coord dx, FL_Coord dy){}; #define fl_set_object_lcolor fl_set_object_lcol #define fl_get_object_lcolor fl_get_object_lcol FL_EXPORT void fl_fit_object_label(FL_OBJECT *obj, FL_Coord xmargin, FL_Coord ymargin){}; FL_EXPORT void fl_get_object_geometry(FL_OBJECT *ob, FL_Coord *x, FL_Coord *y, FL_Coord *w, FL_Coord *h){}; FL_EXPORT void fl_get_object_position(FL_OBJECT *ob, FL_Coord *x, FL_Coord *y){}; /* This one takes into account the label */ FL_EXPORT void fl_get_object_bbox(FL_OBJECT *obj, FL_Coord *x, FL_Coord *y, FL_Coord *w, FL_Coord *h) { *x = *y = *w = *h = 0; }; #define fl_compute_object_geometry fl_get_object_bbox FL_EXPORT void fl_call_object_callback(FL_OBJECT *ob){}; FL_EXPORT FL_HANDLEPTR fl_set_object_prehandler(FL_OBJECT *ob, FL_HANDLEPTR phandler){}; FL_EXPORT FL_HANDLEPTR fl_set_object_posthandler(FL_OBJECT *ob, FL_HANDLEPTR post){}; FL_EXPORT FL_CALLBACKPTR fl_set_object_callback(FL_OBJECT *obj, FL_CALLBACKPTR callback, long argument){}; #define fl_set_object_align fl_set_object_lalign #define fl_set_call_back fl_set_object_callback FL_EXPORT void fl_redraw_object(FL_OBJECT *obj){}; FL_EXPORT void fl_show_object(FL_OBJECT *ob){}; FL_EXPORT void fl_hide_object(FL_OBJECT *ob){}; FL_EXPORT int fl_object_is_visible(FL_OBJECT *obj){}; FL_EXPORT void fl_free_object(FL_OBJECT *obj){}; FL_EXPORT void fl_delete_object(FL_OBJECT *obj){}; FL_EXPORT int fl_get_object_return_state(FL_OBJECT *obj) { return 0; }; FL_EXPORT void fl_trigger_object(FL_OBJECT *obj){}; FL_EXPORT void fl_activate_object(FL_OBJECT *ob){}; FL_EXPORT void fl_deactivate_object(FL_OBJECT *ob){}; FL_EXPORT int fl_object_is_active(FL_OBJECT *obj) { return 0; }; FL_EXPORT int fl_enumerate_fonts(void (*output)(const char *s), int shortform) { return 0; }; FL_EXPORT int fl_set_font_name(int n, const char *name) { return 0; }; FL_EXPORT int fl_set_font_name_f(int n, const char *fmt, ...) { return 0; }; FL_EXPORT void fl_set_font(int numb, int size){}; /* Routines that facilitate free object */ FL_EXPORT int fl_get_char_height(int style, int size, int *asc, int *desc) { return 0; }; FL_EXPORT int fl_get_char_width(int style, int size) { return 0; }; FL_EXPORT int fl_get_string_height(int style, int size, const char *s, int len, int *asc, int *desc) { return 0; }; FL_EXPORT int fl_get_string_width(int style, int size, const char *s, int len) { return 0; }; FL_EXPORT int fl_get_string_widthTAB(int style, int size, const char *s, int len) { return 0; }; FL_EXPORT void fl_get_string_dimension(int fntstyle, int fntsize, const char *s, int len, int *width, int *height){}; #define fl_get_string_size fl_get_string_dimension FL_EXPORT void fl_get_align_xy(int align, int x, int y, int w, int h, int xsize, int ysize, int xoff, int yoff, int *xx, int *yy){}; FL_EXPORT int fl_get_label_char_at_mouse(FL_OBJECT *obj) { return 0; }; FL_EXPORT void fl_drw_text(int align, FL_Coord x, FL_Coord y, FL_Coord w, FL_Coord h, FL_COLOR c, int style, int size, const char *istr){}; FL_EXPORT void fl_drw_text_beside(int align, FL_Coord x, FL_Coord y, FL_Coord w, FL_Coord h, FL_COLOR c, int style, int size, const char *str){}; FL_EXPORT void fl_drw_text_cursor(int align, FL_Coord x, FL_Coord y, FL_Coord w, FL_Coord h, FL_COLOR c, int style, int size, const char *str, int cc, int pos){}; FL_EXPORT void fl_drw_box(int style, FL_Coord x, FL_Coord y, FL_Coord w, FL_Coord h, FL_COLOR c, int bw_in){}; typedef void (*FL_DRAWPTR)(FL_Coord, FL_Coord, FL_Coord, FL_Coord, int, FL_COLOR); FL_EXPORT int fl_add_symbol(const char *name, FL_DRAWPTR drawit, int scalable) { return 0; }; FL_EXPORT int fl_delete_symbol(const char *name) { return 0; }; FL_EXPORT int fl_draw_symbol(const char *label, FL_Coord x, FL_Coord y, FL_Coord w, FL_Coord h, FL_COLOR col) { return 0; }; FL_EXPORT unsigned long fl_mapcolor(FL_COLOR col, int r, int g, int b) { return 0; }; FL_EXPORT long fl_mapcolorname(FL_COLOR col, const char *name) { return 0; }; #define fl_mapcolor_name fl_mapcolorname FL_EXPORT void fl_free_colors(FL_COLOR *c, int n){}; FL_EXPORT void fl_free_pixels(unsigned long *pix, int n){}; FL_EXPORT void fl_set_color_leak(int y){}; FL_EXPORT unsigned long fl_getmcolor(FL_COLOR i, int *r, int *g, int *b) { return 0; }; FL_EXPORT unsigned long fl_get_pixel(FL_COLOR col) { return 0; }; #define fl_get_flcolor fl_get_pixel FL_EXPORT void fl_get_icm_color(FL_COLOR col, int *r, int *g, int *b){}; FL_EXPORT void fl_set_icm_color(FL_COLOR col, int r, int g, int b){}; FL_EXPORT void fl_color(FL_COLOR col){}; FL_EXPORT void fl_bk_color(FL_COLOR col){}; FL_EXPORT void fl_set_gamma(double r, double g, double b){}; FL_EXPORT void fl_show_errors(int y){}; /* Some macros */ #define FL_max(a, b) ((a) > (b) ? (a) : (b)) #define FL_min(a, b) ((a) < (b) ? (a) : (b)) #define FL_abs(a) ((a) > 0 ? (a) : (-(a))) #define FL_nint(a) ((int)((a) > 0 ? ((a) + 0.5) : ((a)-0.5))) #define FL_clamp(a, amin, amax) ((a) < (amin) ? (amin) : ((a) > (amax) ? (amax) : (a))) #define FL_crnd(a) ((FL_Coord)((a) > 0 ? ((a) + 0.5) : ((a)-0.5))) typedef int (*FL_FSCB)(const char *, void *); /* Utilities for new objects */ __attribute__((unused)) static FL_FORM *fl_current_form; FL_EXPORT void fl_add_object(FL_FORM *form, FL_OBJECT *obj){}; FL_EXPORT FL_FORM *fl_addto_form(FL_FORM *form) { return NULL; }; FL_EXPORT FL_OBJECT *fl_make_object(int objclass, int type, FL_Coord x, FL_Coord y, FL_Coord w, FL_Coord h, const char *label, FL_HANDLEPTR handle) { return NULL; }; FL_EXPORT void fl_add_child(FL_OBJECT *oa, FL_OBJECT *ob){}; FL_EXPORT void fl_set_coordunit(int u){}; FL_EXPORT void fl_set_border_width(int bw){}; FL_EXPORT void fl_set_scrollbar_type(int t){}; #define fl_set_thinscrollbar(t) fl_set_scrollbar_type(t ? FL_THIN_SCROLLBAR : FL_NORMAL_SCROLLBAR) FL_EXPORT void fl_flip_yorigin(void){}; FL_EXPORT int fl_get_coordunit(void) { return 0; }; FL_EXPORT int fl_get_border_width(void) { return 0; }; /* Misc. routines */ FL_EXPORT void fl_ringbell(int percent){}; FL_EXPORT void fl_gettime(long *sec, long *usec){}; FL_EXPORT const char *fl_now(void) { return NULL; }; FL_EXPORT const char *fl_whoami(void) { return NULL; }; FL_EXPORT long fl_mouse_button(void) { return 0; }; FL_EXPORT int fl_current_event(void) { return 0; }; FL_EXPORT char *fl_strdup(const char *s) { return NULL; }; FL_EXPORT void fl_set_err_logfp(FILE *fp){}; FL_EXPORT void fl_set_error_handler(FL_ERROR_FUNC user_func){}; FL_EXPORT char **fl_get_cmdline_args(int *ia) { return NULL; }; /* This function was called 'fl_set_error_logfp/' in XForms 0.89. */ #define fl_set_error_logfp fl_set_err_logfp #define fl_mousebutton fl_mouse_button /* These give more flexibility for future changes. Also application * can re-assign these pointers to whatever function it wants, e.g., * to a shared memory pool allocator. */ /* FL_EXPORT void ( * fl_free )( void * ){}; FL_EXPORT void * ( * fl_malloc )( size_t ){}; FL_EXPORT void * ( * fl_calloc )( size_t, size_t ){}; FL_EXPORT void * ( * fl_realloc )( void *, size_t ){}; */ FL_EXPORT int fl_msleep(unsigned long msec) { return 0; }; #define FL_MAX_MENU_CHOICE_ITEMS 128 typedef const char *(*FL_VAL_FILTER)(FL_OBJECT *, double, int); FL_EXPORT int fl_is_same_object(FL_OBJECT *obj1, FL_OBJECT *obj2) { return 0; }; #endif /* ! defined FL_BASIC_H */ /** * \file XBasic.h * * X Window dependent stuff * */ #ifndef FL_XBASIC_H #define FL_XBASIC_H /* Draw mode */ enum { FL_XOR = 0, FL_COPY = 1, FL_AND = 2 }; #define FL_MINDEPTH 1 /* FL_xxx does not do anything anymore, but kept for compatibility */ enum { FL_IllegalVisual = -1, FL_StaticGray = 0, FL_GrayScale = 1, FL_StaticColor = 2, FL_PseudoColor = 3, FL_TrueColor = 4, FL_DirectColor = 5, FL_DefaultVisual = 10 /* special request */ }; enum { FL_North = 0, FL_NorthEast, FL_NorthWest, FL_South, FL_SouthEast, FL_SouthWest, FL_East, FL_West, FL_NoGravity, FL_ForgetGravity }; #ifndef GreyScale #define GreyScale GrayScale #define StaticGrey StaticGray #endif #define FL_is_gray(v) ((v) == GrayScale || (v) == StaticGray) #define FL_is_rgb(v) ((v) == TrueColor || (v) == DirectColor) /* Internal colormap size. Not really very meaningful as fl_mapcolor * and company allow color "leakage", that is, although only FL_MAX_COLS * are kept in the internal colormap, the server might have substantially * more colors allocated */ #define FL_MAX_COLORS 1024 #define FL_MAX_COLS FL_MAX_COLORS /* FL graphics state information. Some are redundant. */ typedef struct { // XVisualInfo * xvinfo; // XFontStruct * cur_fnt; /* current font in default GC */ // Colormap colormap; /* colormap valid for xvinfo */ Window trailblazer; /* a valid window for xvinfo */ int vclass, /* visual class and color depth */ depth; int rgb_bits; /* primary color resolution */ int dithered; /* true if dithered color */ int pcm; /* true if colormap is not shared */ // GC gc[ 16 ]; /* working GC */ // GC textgc[ 16 ]; /* GC used exclusively for text */ // GC dimmedGC; /* A GC having a checkboard stipple */ unsigned long lut[FL_MAX_COLS]; /* secondary lookup table */ unsigned int rshift, rmask, rbits; unsigned int gshift, gmask, gbits; unsigned int bshift, bmask, bbits; } FL_State; #define FL_STATE FL_State /* for compatibility */ /***** Global variables ******/ // static Display *fl_display; __attribute__((unused)) static int fl_screen; __attribute__((unused)) static Window fl_root; /* root window */ __attribute__((unused)) static Window fl_vroot; /* virtual root window */ __attribute__((unused)) static int fl_scrh, /* screen dimension in pixels */ fl_scrw; __attribute__((unused)) static int fl_vmode; /* Current version only runs in single visual mode */ #define fl_get_vclass() fl_vmode #define fl_get_form_vclass(a) fl_vmode #define fl_get_gc() fl_state[fl_vmode].gc[0] //__attribute__((unused)) static FL_State fl_state[]; __attribute__((unused)) static char *fl_ul_magic_char; FL_EXPORT int fl_mode_capable(int mode, int warn) { return 0; }; #define fl_default_win() (fl_state[fl_vmode].trailblazer) #define fl_default_window() (fl_state[fl_vmode].trailblazer) /* All pixmaps used by FL_OBJECT to simulate double buffering have the * following entries in the structure. FL_Coord x,y are used to shift * the origin of the drawing routines */ struct FL_pixmap_ { Pixmap pixmap; Window win; Visual *visual; FL_Coord x, y, w, h; int depth; FL_COLOR dbl_background; FL_COLOR pixel; }; /* Fonts related */ #define FL_MAX_FONTSIZES 10 #define FL_MAX_FONTNAME_LENGTH 80 typedef struct { XFontStruct *fs[FL_MAX_FONTSIZES]; /* cached fontstruct */ short size[FL_MAX_FONTSIZES]; /* cached sizes */ short nsize; /* cached so far */ char fname[FL_MAX_FONTNAME_LENGTH + 1]; /* without size info */ } FL_FONT; /* Some basic drawing routines */ typedef XPoint FL_POINT; typedef XRectangle FL_RECT; /* Rectangles */ FL_EXPORT void fl_rectangle(int fill, FL_Coord x, FL_Coord y, FL_Coord w, FL_Coord h, FL_COLOR col){}; FL_EXPORT void fl_rectbound(FL_Coord x, FL_Coord y, FL_Coord w, FL_Coord h, FL_COLOR col){}; #define fl_rectf(x, y, w, h, c) fl_rectangle(1, x, y, w, h, c) #define fl_rect(x, y, w, h, c) fl_rectangle(0, x, y, w, h, c) /* Rectangle with rounded-corners */ FL_EXPORT void fl_roundrectangle(int fill, FL_Coord x, FL_Coord y, FL_Coord w, FL_Coord h, FL_COLOR col){}; #define fl_roundrectf(x, y, w, h, c) fl_roundrectangle(1, x, y, w, h, c) #define fl_roundrect(x, y, w, h, c) fl_roundrectangle(0, x, y, w, h, c) /* General polygon and polylines */ FL_EXPORT void fl_polygon(int fill, FL_POINT *xp, int n, FL_COLOR col){}; #define fl_polyf(p, n, c) fl_polygon(1, p, n, c) #define fl_polyl(p, n, c) fl_polygon(0, p, n, c) #define fl_polybound(p, n, c) \ do { \ fl_polygon(1, p, n, c); \ fl_polygon(0, p, n, FL_BLACK); \ } while (0) FL_EXPORT void fl_lines(FL_POINT *xp, int n, FL_COLOR col){}; FL_EXPORT void fl_line(FL_Coord xi, FL_Coord yi, FL_Coord xf, FL_Coord yf, FL_COLOR c){}; FL_EXPORT void fl_point(FL_Coord x, FL_Coord y, FL_COLOR c){}; FL_EXPORT void fl_points(FL_POINT *p, int np, FL_COLOR c){}; #define fl_simple_line fl_line FL_EXPORT void fl_dashedlinestyle(const char *dash, int ndash){}; FL_EXPORT void fl_update_display(int block){}; #define fl_diagline(x, y, w, h, c) fl_line(x, y, (x) + (w)-1, (y) + (h)-1, c) /* Line attributes */ enum { FL_SOLID = LineSolid, FL_USERDASH = LineOnOffDash, FL_USERDOUBLEDASH = LineDoubleDash, FL_DOT, FL_DOTDASH, FL_DASH, FL_LONGDASH }; FL_EXPORT void fl_linewidth(int n){}; FL_EXPORT void fl_linestyle(int n){}; FL_EXPORT void fl_drawmode(int request){}; FL_EXPORT int fl_get_linewidth(void) { return 0; }; FL_EXPORT int fl_get_linestyle(void) { return 0; }; FL_EXPORT int fl_get_drawmode(void) { return 0; }; #define fl_set_linewidth fl_linewidth #define fl_set_linestyle fl_linestyle #define fl_set_drawmode fl_drawmode /* * Interfaces */ FL_EXPORT XFontStruct *fl_get_fontstruct(int style, int size){}; #define fl_get_font_struct fl_get_fontstruct #define fl_get_fntstruct fl_get_font_struct FL_EXPORT Window fl_get_mouse(FL_Coord *x, FL_Coord *y, unsigned int *keymask) { return NULL; }; FL_EXPORT void fl_set_mouse(FL_Coord mx, FL_Coord my){}; FL_EXPORT Window fl_get_win_mouse(Window win, FL_Coord *x, FL_Coord *y, unsigned int *keymask) { return NULL; }; FL_EXPORT Window fl_get_form_mouse(FL_FORM *fm, FL_Coord *x, FL_Coord *y, unsigned int *keymask) { return NULL; }; FL_EXPORT FL_FORM *fl_win_to_form(Window win) { return NULL; }; FL_EXPORT void fl_set_form_icon(FL_FORM *form, Pixmap p, Pixmap m){}; FL_EXPORT int fl_get_decoration_sizes(FL_FORM *form, int *top, int *right, int *bottom, int *left) { return 0; }; FL_EXPORT void fl_raise_form(FL_FORM *form){}; FL_EXPORT void fl_lower_form(FL_FORM *form){}; FL_EXPORT void fl_set_foreground(GC gc, FL_COLOR color){}; FL_EXPORT void fl_set_background(GC gc, FL_COLOR color){}; /* General windowing support */ FL_EXPORT Window fl_wincreate(const char *label) { return NULL; }; FL_EXPORT Window fl_winshow(Window win) { return NULL; }; FL_EXPORT Window fl_winopen(const char *label) { return NULL; }; FL_EXPORT void fl_winhide(Window win){}; FL_EXPORT void fl_winclose(Window win){}; FL_EXPORT void fl_winset(Window win){}; FL_EXPORT int fl_winreparent(Window win, Window new_parent) { return 0; }; FL_EXPORT void fl_winfocus(Window win){}; FL_EXPORT Window fl_winget(void) { return NULL; }; FL_EXPORT int fl_iconify(Window win) { return 0; }; FL_EXPORT void fl_winresize(Window win, FL_Coord neww, FL_Coord newh){}; FL_EXPORT void fl_winmove(Window win, FL_Coord dx, FL_Coord dy){}; FL_EXPORT void fl_winreshape(Window win, FL_Coord dx, FL_Coord dy, FL_Coord w, FL_Coord h){}; FL_EXPORT void fl_winicon(Window win, Pixmap p, Pixmap m){}; FL_EXPORT void fl_winbackground(Window win, unsigned long bk){}; FL_EXPORT void fl_winstepsize(Window win, FL_Coord dx, FL_Coord dy){}; FL_EXPORT int fl_winisvalid(Window win) { return 0; }; FL_EXPORT void fl_wintitle(Window win, const char *title){}; FL_EXPORT void fl_wintitle_f(Window win, const char *fmt, ...){}; FL_EXPORT void fl_winicontitle(Window win, const char *title){}; FL_EXPORT void fl_winicontitle_f(Window win, const char *fmt, ...){}; FL_EXPORT void fl_winposition(FL_Coord x, FL_Coord y){}; #define fl_pref_winposition fl_winposition #define fl_win_background fl_winbackground #define fl_winstepunit fl_winstepsize #define fl_set_winstepunit fl_winstepsize FL_EXPORT void fl_winminsize(Window win, FL_Coord w, FL_Coord h){}; FL_EXPORT void fl_winmaxsize(Window win, FL_Coord w, FL_Coord h){}; FL_EXPORT void fl_winaspect(Window win, FL_Coord x, FL_Coord y){}; FL_EXPORT void fl_reset_winconstraints(Window win){}; FL_EXPORT void fl_winsize(FL_Coord w, FL_Coord h){}; FL_EXPORT void fl_initial_winsize(FL_Coord w, FL_Coord h){}; #define fl_pref_winsize fl_winsize FL_EXPORT void fl_initial_winstate(int state){}; FL_EXPORT Colormap fl_create_colormap(XVisualInfo *xv, int nfill){}; FL_EXPORT void fl_wingeometry(FL_Coord x, FL_Coord y, FL_Coord w, FL_Coord h){}; #define fl_pref_wingeometry fl_wingeometry FL_EXPORT void fl_initial_wingeometry(FL_Coord x, FL_Coord y, FL_Coord w, FL_Coord h){}; FL_EXPORT void fl_noborder(void){}; FL_EXPORT void fl_transient(void){}; FL_EXPORT void fl_get_winsize(Window win, FL_Coord *w, FL_Coord *h){}; FL_EXPORT void fl_get_winorigin(Window win, FL_Coord *x, FL_Coord *y){}; FL_EXPORT void fl_get_wingeometry(Window win, FL_Coord *x, FL_Coord *y, FL_Coord *w, FL_Coord *h){}; /* For compatibility */ #define fl_get_win_size fl_get_winsize #define fl_get_win_origin fl_get_winorigin #define fl_get_win_geometry fl_get_wingeometry #define fl_initial_winposition fl_pref_winposition #define fl_get_display() fl_display #define FL_FormDisplay(form) fl_display #define FL_ObjectDisplay(object) fl_display #define FL_IS_CANVAS(o) ((o)->objclass == FL_CANVAS || (o)->objclass == FL_GLCANVAS) /* The window an object belongs to - for drawing */ #define FL_ObjWin(o) (FL_IS_CANVAS(o) ? fl_get_canvas_id(o) : (o)->form->window) FL_EXPORT Window fl_get_real_object_window(FL_OBJECT *ob){}; #define FL_OBJECT_WID FL_ObjWin /* All registerable events, including Client Message */ #define FL_ALL_EVENT (KeyPressMask | KeyReleaseMask | ButtonPressMask | ButtonReleaseMask | EnterWindowMask | LeaveWindowMask | ButtonMotionMask | PointerMotionMask) /* Replacements for X functions that access the event queue */ FL_EXPORT int fl_XNextEvent(XEvent *xev) { return 0; }; FL_EXPORT int fl_XPeekEvent(XEvent *xev) { return 0; }; FL_EXPORT int fl_XEventsQueued(int mode) { return 0; }; FL_EXPORT void fl_XPutBackEvent(XEvent *xev){}; FL_EXPORT const XEvent *fl_last_event(void) { return NULL; }; typedef int (*FL_APPEVENT_CB)(XEvent *, void *); FL_EXPORT FL_APPEVENT_CB fl_set_event_callback(FL_APPEVENT_CB callback, void *user_data){}; FL_EXPORT FL_APPEVENT_CB fl_set_idle_callback(FL_APPEVENT_CB callback, void *user_data){}; FL_EXPORT long fl_addto_selected_xevent(Window win, long mask) { return 0; }; FL_EXPORT long fl_remove_selected_xevent(Window win, long mask) { return 0; }; #define fl_add_selected_xevent fl_addto_selected_xevent FL_EXPORT void fl_set_idle_delta(long delta){}; FL_EXPORT FL_APPEVENT_CB fl_add_event_callback(Window win, int ev, FL_APPEVENT_CB wincb, void *user_data){}; FL_EXPORT void fl_remove_event_callback(Window win, int ev){}; FL_EXPORT void fl_activate_event_callbacks(Window win){}; FL_EXPORT XEvent *fl_print_xevent_name(const char *where, const XEvent *xev){}; FL_EXPORT void fl_XFlush(void){}; #define metakey_down(mask) ((mask)&Mod1Mask) #define shiftkey_down(mask) ((mask)&ShiftMask) #define controlkey_down(mask) ((mask)&ControlMask) #define button_down(mask) (((mask)&Button1Mask) || ((mask)&Button2Mask) || ((mask)&Button3Mask) || ((mask)&Button4Mask) || ((mask)&Button5Mask)) #define fl_keypressed fl_keysym_pressed /****************** Resources ***************/ typedef enum { FL_NONE, FL_SHORT = 10, FL_BOOL, FL_INT, FL_LONG, FL_FLOAT, FL_STRING } FL_RTYPE; typedef struct { const char *res_name; /* resource name */ const char *res_class; /* resource class */ FL_RTYPE type; /* FL_INT, FL_FLOAT, FL_BOOL, FL_STRING */ void *var; /* address for the variable */ const char *defval; /* default setting in string form */ int nbytes; /* used only for strings */ } FL_RESOURCE; #define FL_resource FL_RESOURCE #define FL_CMD_OPT XrmOptionDescRec FL_EXPORT Display *fl_initialize(int *na, char *arg[], const char *appclass, FL_CMD_OPT *appopt, int nappopt) { return NULL; }; FL_EXPORT void fl_finish(void){}; FL_EXPORT const char *fl_get_resource(const char *rname, const char *cname, FL_RTYPE dtype, const char *defval, void *val, int size) { return NULL; }; FL_EXPORT void fl_set_resource(const char *str, const char *val){}; FL_EXPORT void fl_get_app_resources(FL_RESOURCE *appresource, int n){}; FL_EXPORT void fl_set_visualID(long id){}; FL_EXPORT int fl_keysym_pressed(KeySym k) { return 0; }; #define buttonLabelSize buttonFontSize #define sliderLabelSize sliderFontSize #define inputLabelSize inputFontSize /* All Form control variables. Named closely as its resource name */ typedef struct { float rgamma, ggamma, bgamma; int debug, sync; int depth, vclass, doubleBuffer; int ulPropWidth, /* underline stuff */ ulThickness; int buttonFontSize; int sliderFontSize; int inputFontSize; int browserFontSize; int menuFontSize; int choiceFontSize; int labelFontSize; /* all other labels fonts */ int pupFontSize, /* font for pop-up menus */ pupFontStyle; int privateColormap; int sharedColormap; int standardColormap; int scrollbarType; int backingStore; int coordUnit; int borderWidth; int safe; char *rgbfile; /* where RGB file is, not used */ char vname[24]; } FL_IOPT; #define FL_PDButtonLabelSize FL_PDButtonFontSize #define FL_PDSliderLabelSize FL_PDSliderFontSize #define FL_PDInputLabelSize FL_PDInputFontSize /* Program default masks */ enum { FL_PDDepth = (1 << 1), FL_PDClass = (1 << 2), FL_PDDouble = (1 << 3), FL_PDSync = (1 << 4), FL_PDPrivateMap = (1 << 5), FL_PDScrollbarType = (1 << 6), FL_PDPupFontSize = (1 << 7), FL_PDButtonFontSize = (1 << 8), FL_PDInputFontSize = (1 << 9), FL_PDSliderFontSize = (1 << 10), FL_PDVisual = (1 << 11), FL_PDULThickness = (1 << 12), FL_PDULPropWidth = (1 << 13), FL_PDBS = (1 << 14), FL_PDCoordUnit = (1 << 15), FL_PDDebug = (1 << 16), FL_PDSharedMap = (1 << 17), FL_PDStandardMap = (1 << 18), FL_PDBorderWidth = (1 << 19), FL_PDSafe = (1 << 20), FL_PDMenuFontSize = (1 << 21), FL_PDBrowserFontSize = (1 << 22), FL_PDChoiceFontSize = (1 << 23), FL_PDLabelFontSize = (1 << 24) }; #define FL_PDButtonLabel FL_PDButtonLabelSize FL_EXPORT void fl_set_defaults(unsigned long mask, FL_IOPT *cntl){}; FL_EXPORT void fl_set_tabstop(const char *s){}; FL_EXPORT int fl_get_visual_depth(void) { return 0; }; FL_EXPORT int fl_is_global_clipped(void) { return 0; }; FL_EXPORT int fl_is_clipped(int include_global) { return 0; }; FL_EXPORT int fl_is_text_clipped(int include_global) { return 0; }; FL_EXPORT void fl_set_clipping(FL_Coord x, FL_Coord y, FL_Coord w, FL_Coord h){}; FL_EXPORT void fl_unset_clipping(){}; FL_EXPORT void fl_set_text_clipping(FL_Coord x, FL_Coord y, FL_Coord w, FL_Coord h){}; FL_EXPORT void fl_unset_text_clipping(void){}; FL_EXPORT int fl_get_global_clipping(FL_COORD *x, FL_COORD *y, FL_COORD *w, FL_COORD *h) { return 0; }; FL_EXPORT int fl_get_clipping(int include_global, FL_COORD *x, FL_COORD *y, FL_COORD *w, FL_COORD *h) { return 0; }; FL_EXPORT int fl_get_text_clipping(int include_global, FL_COORD *x, FL_COORD *y, FL_COORD *w, FL_COORD *h) { return 0; }; FL_EXPORT void fl_set_gc_clipping(GC gc, FL_Coord x, FL_Coord y, FL_Coord w, FL_Coord h){}; FL_EXPORT void fl_unset_gc_clipping(GC gc){}; /* How we pack and unpack colors */ #ifndef FL_PCBITS typedef unsigned char FL_PCTYPE; /* primary color type */ #define FL_PCBITS 8 /* primary color bits */ #define FL_PCMAX ((1 << FL_PCBITS) - 1) #define FL_PCCLAMP(a) ((a) > (FL_PCMAX) ? (FL_PCMAX) : ((a) < 0 ? 0 : (a))) typedef unsigned int FL_PACKED4; #define FL_PACKED FL_PACKED4 #define FL_RMASK 0x000000ff #define FL_RSHIFT 0 #define FL_GMASK 0x0000ff00 #define FL_GSHIFT 8 #define FL_BMASK 0x00ff0000 #define FL_BSHIFT 16 #define FL_AMASK 0xff000000 #define FL_ASHIFT 24 /* If PCBITS is not 8, we need to apply the RGBmask */ #define FL_GETR(packed) (((packed) >> FL_RSHIFT) & FL_RMASK) #define FL_GETG(packed) (((packed) >> FL_GSHIFT) & FL_PCMAX) #define FL_GETB(packed) (((packed) >> FL_BSHIFT) & FL_PCMAX) #define FL_GETA(packed) (((packed) >> FL_ASHIFT) & FL_PCMAX) #define FL_PACK3(r, g, b) (((r) << FL_RSHIFT) | ((g) << FL_GSHIFT) | ((b) << FL_BSHIFT)) #define FL_PACK FL_PACK3 #define FL_PACK4(r, g, b, a) (FL_PACK3(r, g, b) | ((a) << FL_ASHIFT)) #define FL_UNPACK(p, r, g, b) \ do { \ r = FL_GETR(p); \ g = FL_GETG(p); \ b = FL_GETB(p); \ } while (0) #define FL_UNPACK3 FL_UNPACK #define FL_UNPACK4(p, r, g, b, a) \ do { \ FL_UNPACK3(p, r, g, b); \ a = FL_GETA(p); \ } while (0) #endif typedef struct { unsigned int rshift, rmask, rbits; unsigned int gshift, gmask, gbits; unsigned int bshift, bmask, bbits; int bits_per_rgb; int colormap_size; } FL_RGB2PIXEL_; #define FL_RGB2PIXEL FL_RGB2PIXEL_ #endif /* ! defined FL_XBASIC_H */ /** * \file box.h * */ #ifndef FL_BOX_H #define FL_BOX_H /* Type is already defined in Basic.h */ FL_EXPORT FL_OBJECT *fl_create_box(int type, FL_Coord x, FL_Coord y, FL_Coord w, FL_Coord h, const char *label) { return NULL; }; FL_EXPORT FL_OBJECT *fl_add_box(int type, FL_Coord x, FL_Coord y, FL_Coord w, FL_Coord h, const char *label) { return NULL; }; #endif /* ! defined FL_BOX_H */ /** * \file canvas.h * * Header for FL_CANVAS * */ #ifndef FL_CANVAS_H_ #define FL_CANVAS_H_ typedef enum { FL_NORMAL_CANVAS, FL_SCROLLED_CANVAS } FL_CANVAS_TYPE; typedef int (*FL_HANDLE_CANVAS)(FL_OBJECT *, Window, int, int, XEvent *, void *); typedef int (*FL_MODIFY_CANVAS_PROP)(FL_OBJECT *); /******************** Default *********************/ #define FL_CANVAS_BOXTYPE FL_DOWN_BOX /* really the decoration frame */ #define FL_CANVAS_ALIGN FL_ALIGN_TOP /************ Interfaces ************************/ FL_EXPORT FL_OBJECT *fl_create_generic_canvas(int canvas_class, int type, FL_Coord x, FL_Coord y, FL_Coord w, FL_Coord h, const char *label) { return NULL; }; extern FL_OBJECT *websrv_fl_add_canvas(int type, FL_Coord x, FL_Coord y, FL_Coord w, FL_Coord h, const char *label); FL_EXPORT FL_OBJECT *fl_create_canvas(int type, FL_Coord x, FL_Coord y, FL_Coord w, FL_Coord h, const char *label) { return NULL; }; /* backward compatibility */ #define fl_set_canvas_decoration fl_set_object_boxtype FL_EXPORT void fl_set_canvas_colormap(FL_OBJECT *ob, Colormap colormap){}; FL_EXPORT void fl_set_canvas_visual(FL_OBJECT *obj, Visual *vi){}; FL_EXPORT void fl_set_canvas_depth(FL_OBJECT *obj, int depth){}; FL_EXPORT void fl_set_canvas_attributes(FL_OBJECT *ob, unsigned int mask, XSetWindowAttributes *xswa){}; FL_EXPORT FL_HANDLE_CANVAS fl_add_canvas_handler(FL_OBJECT *ob, int ev, FL_HANDLE_CANVAS h, void *udata) { return NULL; }; FL_EXPORT Window fl_get_canvas_id(FL_OBJECT *ob) { return NULL; }; FL_EXPORT Colormap fl_get_canvas_colormap(FL_OBJECT *ob) { return NULL; }; FL_EXPORT int fl_get_canvas_depth(FL_OBJECT *obj) { return 0; }; FL_EXPORT void fl_remove_canvas_handler(FL_OBJECT *ob, int ev, FL_HANDLE_CANVAS h){}; FL_EXPORT void fl_share_canvas_colormap(FL_OBJECT *ob, Colormap colormap){}; FL_EXPORT void fl_clear_canvas(FL_OBJECT *ob){}; FL_EXPORT void fl_modify_canvas_prop(FL_OBJECT *obj, FL_MODIFY_CANVAS_PROP init, FL_MODIFY_CANVAS_PROP activate, FL_MODIFY_CANVAS_PROP cleanup){}; FL_EXPORT void fl_canvas_yield_to_shortcut(FL_OBJECT *ob, int yes){}; /* This is an attempt to maintain some sort of backwards compatibility * with old code whilst also getting rid of the old, system-specific * hack. */ #ifdef AUTOINCLUDE_GLCANVAS_H #include #endif #endif /* ! defined FL_CANVAS_H */ /** * \file text.h */ #ifndef FL_TEXT_H #define FL_TEXT_H enum { FL_NORMAL_TEXT }; #define FL_TEXT_BOXTYPE FL_FLAT_BOX #define FL_TEXT_COL1 FL_COL1 #define FL_TEXT_COL2 FL_MCOL #define FL_TEXT_LCOL FL_LCOL #define FL_TEXT_ALIGN (FL_ALIGN_LEFT | FL_ALIGN_INSIDE) FL_EXPORT FL_OBJECT *fl_create_text(int type, FL_Coord x, FL_Coord y, FL_Coord w, FL_Coord h, const char *label) { return NULL; }; FL_EXPORT FL_OBJECT *fl_add_text(int type, FL_Coord x, FL_Coord y, FL_Coord w, FL_Coord h, const char *label) { return NULL; }; #endif /* ! defined FL_TEXT_H */ /** * \file xyplot.h */ #ifndef FL_XYPLOT_H #define FL_XYPLOT_H /* Class FL_XYPLOT */ typedef enum { FL_NORMAL_XYPLOT, /* solid line */ FL_SQUARE_XYPLOT, /* with added square */ FL_CIRCLE_XYPLOT, /* with added circle */ FL_FILL_XYPLOT, /* fill completely */ FL_POINTS_XYPLOT, /* only data points */ FL_DASHED_XYPLOT, /* dashed line */ FL_IMPULSE_XYPLOT, FL_ACTIVE_XYPLOT, /* accepts interactive manipulations */ FL_EMPTY_XYPLOT, FL_DOTTED_XYPLOT, FL_DOTDASHED_XYPLOT, FL_LONGDASHED_XYPLOT, FL_LINEPOINTS_XYPLOT /* line & points */ } FL_XYPLOT_TYPE; enum { FL_LINEAR, FL_LOG }; enum { FL_GRID_NONE = 0, FL_GRID_MAJOR = 1, FL_GRID_MINOR = 2 }; /***** Defaults *****/ #define FL_XYPLOT_BOXTYPE FL_FLAT_BOX #define FL_XYPLOT_COL1 FL_COL1 #define FL_XYPLOT_LCOL FL_LCOL #define FL_XYPLOT_ALIGN FL_ALIGN_BOTTOM #define FL_MAX_XYPLOTOVERLAY 32 /***** Others *****/ FL_EXPORT FL_OBJECT *fl_create_xyplot(int t, FL_Coord x, FL_Coord y, FL_Coord w, FL_Coord h, const char *label) { return NULL; }; extern FL_OBJECT *websrv_fl_add_xyplot(int t, FL_Coord x, FL_Coord y, FL_Coord w, FL_Coord h, const char *label); FL_EXPORT void fl_set_xyplot_data(FL_OBJECT *ob, float *x, float *y, int n, const char *title, const char *xlabel, const char *ylabel){}; FL_EXPORT void fl_set_xyplot_data_double(FL_OBJECT *ob, double *x, double *y, int n, const char *title, const char *xlabel, const char *ylabel){}; FL_EXPORT int fl_set_xyplot_file(FL_OBJECT *ob, const char *f, const char *title, const char *xl, const char *yl) { return 0; }; FL_EXPORT void fl_insert_xyplot_data(FL_OBJECT *ob, int id, int n, double x, double y){}; #define fl_set_xyplot_datafile fl_set_xyplot_file FL_EXPORT void fl_add_xyplot_text(FL_OBJECT *ob, double x, double y, const char *text, int al, FL_COLOR col){}; FL_EXPORT void fl_delete_xyplot_text(FL_OBJECT *ob, const char *text){}; FL_EXPORT int fl_set_xyplot_maxoverlays(FL_OBJECT *ob, int maxover) { return 0; }; FL_EXPORT void fl_add_xyplot_overlay(FL_OBJECT *ob, int id, float *x, float *y, int n, FL_COLOR col) { return; }; FL_EXPORT void fl_set_xyplot_xbounds(FL_OBJECT *ob, double xmin, double xmax){}; FL_EXPORT void fl_set_xyplot_ybounds(FL_OBJECT *ob, double ymin, double ymax){}; FL_EXPORT void fl_get_xyplot_xbounds(FL_OBJECT *ob, float *xmin, float *xmax){}; FL_EXPORT void fl_get_xyplot_ybounds(FL_OBJECT *ob, float *ymin, float *ymax){}; FL_EXPORT void fl_get_xyplot(FL_OBJECT *ob, float *x, float *y, int *i){}; FL_EXPORT int fl_get_xyplot_data_size(FL_OBJECT *obj) { return 0; }; extern void websrv_fl_get_xyplot_data(FL_OBJECT *ob, float *x, float *y, int *n); extern void websrv_fl_get_xyplot_data_pointer(FL_OBJECT *ob, int id, float **x, float **y, int *n); FL_EXPORT void fl_set_xyplot_xgrid(FL_OBJECT *ob, int xgrid){}; typedef void (*FL_XYPLOT_SYMBOL)(FL_OBJECT *, int, FL_POINT *, int, int, int); FL_EXPORT FL_XYPLOT_SYMBOL fl_set_xyplot_symbol(FL_OBJECT *ob, int id, FL_XYPLOT_SYMBOL symbol) { return NULL; }; #endif /* FL_XYPLOT_H */ /*----------------------------------------------------------------------*/ /* new functions for interfacing with webserver */ extern int websrv_nf_getdata(FL_OBJECT *graph, int layer, websrv_scopedata_msg_t **msg); extern void websrv_free_xyplot(FL_OBJECT *obj); #if defined __cplusplus } #endif #endif /* FL_FORMS_H */