UNIXworkcode

/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- * * ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla 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.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * The Original Code is the Microline Widget Library, originally made available under the NPL by Neuron Data <http://www.neurondata.com>. * * The Initial Developer of the Original Code is * Netscape Communications Corporation. * Portions created by the Initial Developer are Copyright (C) 1998 * the Initial Developer. All Rights Reserved. * * Contributor(s): * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * In addition, as a special exception to the GNU GPL, the copyright holders * give permission to link the code of this program with the Motif and Open * Motif libraries (or with modified versions of these that use the same * license), and distribute linked combinations including the two. You * must obey the GNU General Public License in all respects for all of * the code used other than linking with Motif/Open Motif. If you modify * this file, you may extend this exception to your version of the file, * but you are not obligated to do so. If you do not wish to do so, * delete this exception statement from your version. * * ***** END LICENSE BLOCK ***** */ #include <XmL/XmL.h> #include <XmL/Folder.h> #include <XmL/Grid.h> #include <XmL/Progress.h> #include <XmL/Tree.h> #include <Xm/Xm.h> #include <Xm/DialogS.h> #include <Xm/Form.h> #include <Xm/Label.h> #include <Xm/PushB.h> #include <Xm/DrawingA.h> #include <Xm/Text.h> #include <Xm/ToggleB.h> #include <Xm/Protocols.h> #include <X11/IntrinsicP.h> #include <X11/cursorfont.h> #include <stdlib.h> #include <stdio.h> #include <unistd.h> static void CreateWidgetEdit(); static Widget AddWidgetSample(); static void CreateText(); static void CreatePixmap(); void AddCoverTabForm(); void AddIntroTabForm(); void AddFolderTabForm(); void AddGridTabForm(); void AddProgTabForm(); void AddTreeTabForm(); /* Main Window */ static void exitCB(); static void editCB(); static void folderCB(); #define BOLDFONT "-*-helvetica-bold-r-*--*-100-*-*-*-*-iso8859-1" main(argc, argv) int argc; char *argv[]; { XtAppContext context; Widget w, shell, form, folder; int i; XrmDatabase db; static String resources[] = { "*fontList: -*-helvetica-medium-r-*--*-100-*-*-*-*-iso8859-1", "*XmText.fontList: -*-helvetica-medium-r-*--*-100-*-*-*-*-iso8859-1", "*XmLProgress.fontList: -*-helvetica-bold-r-*--*-100-*-*-*-*-iso8859-1", "*background: #D0D0D0", "*foreground: black", "*topShadowColor: white", "*bottomShadowColor: #404040", "*XmLGrid.topShadowColor: #F0F0F0", "*XmLGrid.selectBackground: #000060", "*XmLGrid.selectForeground: white", "*XmLProgress.topShadowColor: #E0E0E0", "*XmLProgress.bottomShadowColor: #404040", "*XmToggleButton.selectColor: blue", "*XmToggleButton.marginHeight: 0", "*XmToggleButton.spacing: 4", "*XmText.marginHeight: 2", "*XmForm.marginHeight: 8", "*XmForm.marginWidth: 10", "*XmForm.horizontalSpacing: 8", "*XmForm.verticalSpacing: 10", "*XmLabel.marginWidth: 0", "*XmLFolder.XmForm.marginHeight: 16", "*XmLFolder.XmForm.marginWidth: 16", "*XmPushButton.marginHeight: 4", "*WidgetEdit*name.foreground: #000060", "*WidgetEdit*class.foreground: #000060", "*WidgetEdit*XmText.background: white", "*XmLTree.blankBackground: white", "*XmLTree.selectBackground: #000060", "*XmLTree.selectForeground: white", "*XmLTree.connectingLineColor: black", NULL }; shell = XtVaAppInitialize(&context, "Test", NULL, 0, #ifdef X11R4 (Cardinal *)&argc, argv, resources, NULL); #else (int *)&argc, argv, resources, NULL); #endif /* Force override of the falback resources. Normally, we would have an app-default file or similar but since this is a demo, we don't want the user to have to set anything up to run */ db = XtDatabase(XtDisplay(shell)); i = 0; while (resources[i]) { XrmPutLineResource(&db, resources[i]); i++; } XtVaSetValues( shell, XmNtitle, "Microline Widget Library", NULL); form = XtVaCreateWidget("form", xmFormWidgetClass, shell, XmNshadowThickness, 0, NULL); w = XtVaCreateManagedWidget("Exit", xmPushButtonWidgetClass, form, XmNrightAttachment, XmATTACH_FORM, XmNbottomAttachment, XmATTACH_FORM, XmNwidth, 100, NULL); XtAddCallback(w, XmNactivateCallback, exitCB, (XtPointer)shell); w = XtVaCreateManagedWidget("Editor", xmPushButtonWidgetClass, form, XmNrightAttachment, XmATTACH_WIDGET, XmNrightWidget, w, XmNbottomAttachment, XmATTACH_FORM, XmNwidth, 100, NULL); XtAddCallback(w, XmNactivateCallback, editCB, NULL); CreateWidgetEdit(form); folder = XtVaCreateManagedWidget("folder", xmlFolderWidgetClass, form, XmNtopAttachment, XmATTACH_FORM, XmNleftAttachment, XmATTACH_FORM, XmNrightAttachment, XmATTACH_FORM, XmNbottomAttachment, XmATTACH_WIDGET, XmNbottomWidget, w, XmNbottomOffset, 5, XmNtabsPerRow, 3, NULL); AddCoverTabForm(folder); AddIntroTabForm(folder); AddGridTabForm(folder); AddTreeTabForm(folder); AddFolderTabForm(folder); AddProgTabForm(folder); XtAddCallback(folder, XmNactivateCallback, folderCB, NULL); XtManageChild(form); XtRealizeWidget(shell); XtAppMainLoop(context); } static void exitCB(w, clientData, callData) Widget w; XtPointer clientData; XtPointer callData; { Widget shell; shell = (Widget)clientData; exit(0); } /* Widget Editor Functions */ static void _getResourceAsString(); static void _editCB(); static void _editCommandCB(); static void _editChooseCB(); static void _editShowCB(); static void _editCloseCB(); static void _wmCloseCB(); Widget _editDialog, _editClassL, _editNameL, _editGrid, _editCommandT; Widget _editWidget; Boolean _editShowInherited, _editDialogUp; int _editRow, _editCol; static void CreateWidgetEdit(parent) Widget parent; { Widget form, w; Widget chooseB, closeB; Atom WM_DELETE_WINDOW; _editWidget = 0; _editShowInherited = 0; _editDialogUp = False; _editDialog = XtVaAppCreateShell("WidgetEdit", "WidgetEdit", topLevelShellWidgetClass, XtDisplay(parent), XtNtitle, "Widget Editor", XmNdeleteResponse, XmDO_NOTHING, NULL); WM_DELETE_WINDOW = XmInternAtom(XtDisplay(parent), "WM_DELETE_WINDOW", False); XmAddWMProtocolCallback(_editDialog, WM_DELETE_WINDOW, _wmCloseCB, (XtPointer)_editDialog); form = XtVaCreateWidget("form", xmFormWidgetClass, _editDialog, XmNautoUnmanage, False, XmNshadowThickness, 0, NULL); /* Top Row */ w = XtVaCreateManagedWidget("Name:", xmLabelWidgetClass, form, XmNleftAttachment, XmATTACH_FORM, XmNtopAttachment, XmATTACH_FORM, NULL); _editNameL = XtVaCreateManagedWidget("name", xmLabelWidgetClass, form, XmNleftAttachment, XmATTACH_WIDGET, XmNleftWidget, w, XmNtopAttachment, XmATTACH_FORM, NULL); w = XtVaCreateManagedWidget("Class:", xmLabelWidgetClass, form, XmNleftAttachment, XmATTACH_WIDGET, XmNleftWidget, _editNameL, XmNtopAttachment, XmATTACH_FORM, NULL); _editClassL = XtVaCreateManagedWidget("class", xmLabelWidgetClass, form, XmNleftAttachment, XmATTACH_WIDGET, XmNleftWidget, w, XmNtopAttachment, XmATTACH_FORM, NULL); w = XtVaCreateManagedWidget("Show All", xmToggleButtonWidgetClass, form, XmNtopAttachment, XmATTACH_FORM, XmNtopOffset, 4, XmNrightAttachment, XmATTACH_FORM, NULL); XtAddCallback(w, XmNvalueChangedCallback, _editShowCB, 0); _editGrid = XtVaCreateManagedWidget("Grid", xmlGridWidgetClass, form, XtVaTypedArg, XmNblankBackground, XmRString, "white", 6, XmNcolumns, 4, XmNsimpleWidths, "16c 18c 24c 16c", XmNvisibleColumns, 9, XmNheadingRows, 1, XmNvsbDisplayPolicy, XmSTATIC, XmNsimpleHeadings, "Class|Type|Resource|Value", XmNvisibleRows, 8, XmNshadowThickness, 0, XmNscrollBarMargin, 4, XmNselectionPolicy, XmSELECT_NONE, XmNallowColumnResize, True, XmNtopAttachment, XmATTACH_WIDGET, XmNtopWidget, w, XmNleftAttachment, XmATTACH_FORM, XmNrightAttachment, XmATTACH_FORM, NULL); XtVaSetValues(_editGrid, XmNcellDefaults, True, XmNcellMarginRight, 2, XmNcellAlignment, XmALIGNMENT_LEFT, XtVaTypedArg, XmNcellBackground, XmRString, "white", 6, XmNcellLeftBorderType, XmBORDER_NONE, XmNcellRightBorderType, XmBORDER_NONE, XmNcellTopBorderType, XmBORDER_NONE, XmNcellBottomBorderType, XmBORDER_NONE, NULL); XtVaSetValues(_editGrid, XmNcellDefaults, True, XmNcolumn, 3, XmNcellEditable, True, NULL); XtAddCallback(_editGrid, XmNeditCallback, _editCB, 0); w = XtVaCreateManagedWidget("Command", xmLabelWidgetClass, form, XmNbottomAttachment, XmATTACH_FORM, XmNbottomOffset, 11, XmNleftAttachment, XmATTACH_FORM, NULL); _editCommandT = XtVaCreateManagedWidget("editCommandT", xmTextWidgetClass, form, XmNbottomAttachment, XmATTACH_FORM, XmNleftAttachment, XmATTACH_WIDGET, XmNleftWidget, w, NULL); XtAddCallback(_editCommandT, XmNactivateCallback, _editCommandCB, 0); /* Bottom Row */ chooseB = XtVaCreateManagedWidget("Choose", xmPushButtonWidgetClass, form, XmNbottomAttachment, XmATTACH_FORM, XmNmarginWidth, 18, NULL); XtAddCallback(chooseB, XmNactivateCallback, _editChooseCB, 0); closeB = XtVaCreateManagedWidget("Close", xmPushButtonWidgetClass, form, XmNrightAttachment, XmATTACH_FORM, XmNbottomAttachment, XmATTACH_FORM, XmNmarginWidth, 24, NULL); XtAddCallback(closeB, XmNactivateCallback, _editCloseCB, 0); XtVaSetValues(chooseB, XmNrightAttachment, XmATTACH_WIDGET, XmNrightWidget, closeB, NULL); XtVaSetValues(_editCommandT, XmNrightAttachment, XmATTACH_WIDGET, XmNrightWidget, chooseB, NULL); XtVaSetValues(_editGrid, XmNbottomAttachment, XmATTACH_WIDGET, XmNbottomWidget, closeB, NULL); XtManageChild(form); } static void SetEditWidget(w) Widget w; { WidgetClass wc, superWc; XtResourceList resList; char className[50], *resName, *resType; Cardinal resCount; int i, j, n, skip, done, superSize; char resVal[50], line[100]; XmString str; char *s; static char *skipType[] = { "Callback", 0 }; _editWidget = w; if (_editWidget) s = XtName(_editWidget); else s = "none"; if (s) { str = XmStringCreateSimple(s); XtVaSetValues(_editNameL, XmNlabelString, str, NULL); XmStringFree(str); } if (_editWidget) { wc = XtClass(_editWidget); s = wc->core_class.class_name; } else s = "none"; if (s) { str = XmStringCreateSimple(s); XtVaSetValues(_editClassL, XmNlabelString, str, NULL); XmStringFree(str); } if (!_editWidget) { XmLGridDeleteAllRows(_editGrid, XmCONTENT); return; } n = 0; done = 0; XtVaSetValues(_editGrid, XmNlayoutFrozen, True, NULL); XmLGridDeleteAllRows(_editGrid, XmCONTENT); while (!done) { if (!wc) { wc = XtClass(XtParent(_editWidget)); XtGetConstraintResourceList(wc, &resList, &resCount); sprintf(className, "%s [C]", wc->core_class.class_name); superSize = 0; done = 1; } else { XtGetResourceList(wc, &resList, &resCount); sprintf(className, wc->core_class.class_name); superWc = wc->core_class.superclass; if (superWc) superSize = superWc->core_class.widget_size; } for (i = 0; i < resCount; i++) { resName = resList[i].resource_name; resType = resList[i].resource_type; if (resList[i].resource_offset < superSize) continue; skip = 0; for (j = 0; skipType[j]; j++) if (!strcmp(skipType[j], resType)) skip = 1; if (skip) continue; _getResourceAsString(resName, resType, resVal); sprintf(line, "%s|%s|%s|%s", className, resType, resName, resVal); XmLGridAddRows(_editGrid, XmCONTENT, -1, 1); XmLGridSetStringsPos(_editGrid, XmCONTENT, n, XmCONTENT, 0, line); n++; } wc = wc->core_class.superclass; XtFree((char *)resList); if (_editShowInherited == False) done = 1; } XtVaSetValues(_editGrid, XmNlayoutFrozen, False, NULL); } static void _getResourceAsString(res, type, str) char *res; char *type; char *str; { Boolean bool; Dimension dimension; int i; static char *skipRes[] = { XmNrowExpands, XmNrowIsExpanded, XmNrowHeight, XmNrowLevel, XmNcolumnWidth, XmNcellColumnSpan, XmNcellEditable, XmNcellMarginBottom, XmNcellMarginLeft, XmNcellMarginRight, XmNcellMarginTop, XmNcellRowSpan, XmNcellToggleSet, 0 }; for (i = 0; skipRes[i]; i++) if (!strcmp(skipRes[i], res)) { sprintf(str, ""); return; } if (!strcmp(type, XmRInt)) { XtVaGetValues(_editWidget, res, &i, NULL); sprintf(str, "%d", i); } else if (!strcmp(type, XmRDimension)) { XtVaGetValues(_editWidget, res, &dimension, NULL); sprintf(str, "%d", (int)dimension); } else if (!strcmp(type, XmRBoolean)) { XtVaGetValues(_editWidget, res, &bool, NULL); if (bool == True) sprintf(str, "True"); else sprintf(str, "False"); } else sprintf(str, ""); } static void _editCB(w, clientData, callData) Widget w; XtPointer clientData; XtPointer callData; { XmLGridCallbackStruct *cbs; int resRow, rowType, row, rowEnd, colType, col, colEnd; XmLGridRow rowp; XmLGridColumn colp; XmString resStr, valStr; char *s, *resS, *valS; static char *emptyValS = ""; cbs = (XmLGridCallbackStruct *)callData; if (cbs->reason != XmCR_EDIT_COMPLETE) return; resRow = cbs->row; /* get resource and value */ rowp = XmLGridGetRow(_editGrid, XmCONTENT, resRow); colp = XmLGridGetColumn(_editGrid, XmCONTENT, 2); XtVaGetValues(_editGrid, XmNrowPtr, rowp, XmNcolumnPtr, colp, XmNcellString, &resStr, NULL); if (!resStr) resS = 0; else XmStringGetLtoR(resStr, XmSTRING_DEFAULT_CHARSET, &resS); colp = XmLGridGetColumn(_editGrid, XmCONTENT, 3); XtVaGetValues(_editGrid, XmNrowPtr, rowp, XmNcolumnPtr, colp, XmNcellString, &valStr, NULL); if (!valStr) valS = emptyValS; else XmStringGetLtoR(valStr, XmSTRING_DEFAULT_CHARSET, &valS); if (XmLIsGrid(_editWidget)) XtVaSetValues(_editWidget, XmNrow, _editRow, XmNcolumn, _editCol, XtVaTypedArg, resS, XmRString, valS, strlen(valS) + 1, NULL); else XtVaSetValues(_editWidget, XtVaTypedArg, resS, XmRString, valS, strlen(valS) + 1, NULL); if (resS) XtFree(resS); if (resStr) XmStringFree(resStr); if (valS != emptyValS) XtFree(valS); if (valStr) XmStringFree(valStr); } static void _editCommandCB(w, clientData, callData) Widget w; XtPointer clientData; XtPointer callData; { char op[40], *cmd; int *rowPos, *colPos, *newPos; int i, l1, l2, l3, l4, n, count; XmString str; cmd = XmTextGetString(_editCommandT); if (_editWidget && XmLIsGrid(_editWidget)) { n = sscanf(cmd, "%s %d %d %d %d", op, &l1, &l2, &l3, &l4); /* Tree commands */ if (!strcmp(op, "addTreeRow") && n == 5) { str = XmStringCreateSimple("New Node"); XmLTreeAddRow(_editWidget, l1, (Boolean)l2, (Boolean)l3, l4, XmUNSPECIFIED_PIXMAP, XmUNSPECIFIED_PIXMAP, str); XmStringFree(str); } /* Grid commands */ else if (!strcmp(op, "addHRows") && n == 3) XmLGridAddRows(_editWidget, XmHEADING, l1, l2); else if (!strcmp(op, "addFRows") && n == 3) XmLGridAddRows(_editWidget, XmFOOTER, l1, l2); else if (!strcmp(op, "addRows") && n == 3) XmLGridAddRows(_editWidget, XmCONTENT, l1, l2); else if (!strcmp(op, "addHColumns") && n == 3) XmLGridAddColumns(_editWidget, XmHEADING, l1, l2); else if (!strcmp(op, "addFColumns") && n == 3) XmLGridAddColumns(_editWidget, XmFOOTER, l1, l2); else if (!strcmp(op, "addColumns") && n == 3) XmLGridAddColumns(_editWidget, XmCONTENT, l1, l2); else if (!strcmp(op, "deleteHRows") && n == 3) XmLGridDeleteRows(_editWidget, XmHEADING, l1, l2); else if (!strcmp(op, "deleteFRows") && n == 3) XmLGridDeleteRows(_editWidget, XmFOOTER, l1, l2); else if (!strcmp(op, "deleteRows") && n == 3) XmLGridDeleteRows(_editWidget, XmCONTENT, l1, l2); else if (!strcmp(op, "deleteHColumns") && n == 3) XmLGridDeleteColumns(_editWidget, XmHEADING, l1, l2); else if (!strcmp(op, "deleteFColumns") && n == 3) XmLGridDeleteColumns(_editWidget, XmFOOTER, l1, l2); else if (!strcmp(op, "deleteColumns") && n == 3) XmLGridDeleteColumns(_editWidget, XmCONTENT, l1, l2); else if (!strcmp(op, "copyPos") && n == 3) XmLGridCopyPos(_editWidget, CurrentTime, XmCONTENT, l1, XmCONTENT, l2, 3, 3); else if (!strcmp(op, "copySelected") && n == 1) XmLGridCopySelected(_editWidget, CurrentTime); else if (!strcmp(op, "paste") && n == 1) XmLGridPaste(_editWidget); else if (!strcmp(op, "pastePos") && n == 3) XmLGridPastePos(_editWidget, XmCONTENT, l1, XmCONTENT, l2); else if (!strcmp(op, "moveColumns") && n == 1) XmLGridMoveColumns(_editWidget, 3, 1, 2); else if (!strcmp(op, "moveRows") && n == 1) XmLGridMoveRows(_editWidget, 3, 1, 2); else if (!strcmp(op, "printSelected") && n == 1) { printf ("--- Current Selections ---\n"); count = XmLGridGetSelectedRowCount(_editWidget); if (count) { rowPos = (int *)malloc(sizeof(int) * count); XmLGridGetSelectedRows(_editWidget, rowPos, count); printf ("Selected Rows: "); for (i = 0; i < count; i++) printf ("%d ", rowPos[i]); printf ("\n"); free((char *)rowPos); } count = XmLGridGetSelectedColumnCount(_editWidget); if (count) { colPos = (int *)malloc(sizeof(int) * count); XmLGridGetSelectedColumns(_editWidget, colPos, count); printf ("Selected Columns: "); for (i = 0; i < count; i++) printf ("%d ", colPos[i]); printf ("\n"); free((char *)colPos); } count = XmLGridGetSelectedCellCount(_editWidget); if (count) { colPos = (int *)malloc(sizeof(int) * count); rowPos = (int *)malloc(sizeof(int) * count); XmLGridGetSelectedCells(_editWidget, rowPos, colPos, count); printf ("Selected Cells: "); for (i = 0; i < count; i++) printf ("[%d %d] ", rowPos[i], colPos[i]); printf ("\n"); free((char *)colPos); free((char *)rowPos); } } else if (!strcmp(op, "setCell") && n == 3) { printf ("WidgetEdit: set row %d col %d\n", l1, l2); _editRow = l1; _editCol = l2; } else if (!strcmp(op, "reorderColumns") && n == 1) { XtVaGetValues(_editWidget, XmNcolumns, &count, NULL); newPos = (int *)malloc(count * sizeof(int)); for (i = 0; i < count; i++) newPos[i] = i + 1; newPos[count - 1] = 0; XmLGridReorderColumns(_editWidget, newPos, 0, count); free((char *)newPos); } else if (!strcmp(op, "reorderRows") && n == 1) { XtVaGetValues(_editWidget, XmNrows, &count, NULL); newPos = (int *)malloc(count * sizeof(int)); for (i = 0; i < count; i++) newPos[i] = i + 1; newPos[count - 1] = 0; XmLGridReorderRows(_editWidget, newPos, 0, count); free((char *)newPos); } else if (!strcmp(op, "write") && n == 1) XmLGridWrite(_editWidget, stdout, XmFORMAT_DELIMITED, '|', True); else if (!strcmp(op, "writeXL") && n == 1) XmLGridWrite(_editWidget, stdout, XmFORMAT_XL, 0, True); else if (!strcmp(op, "writePAD") && n == 1) XmLGridWrite(_editWidget, stdout, XmFORMAT_PAD, 0, True); else if (!strcmp(op, "writePos") && n == 3) XmLGridWritePos(_editWidget, stdout, XmFORMAT_DELIMITED, '|', True, XmCONTENT, 0, XmCONTENT, 0, l1, l2); else fprintf(stderr, "WidgetEdit: unknown command %s\n", cmd); } XtFree(cmd); XmTextSetString(_editCommandT, ""); } static void _editChooseCB(w, clientData, callData) Widget w; XtPointer clientData; XtPointer callData; { Cursor cursor; Widget editW; cursor = XCreateFontCursor(XtDisplay(w), XC_hand2); editW = XmTrackingLocate(w, cursor, False); if (editW) SetEditWidget(editW); XFreeCursor(XtDisplay(w), cursor); } static void _editShowCB(w, clientData, callData) Widget w; XtPointer clientData; XtPointer callData; { XmToggleButtonCallbackStruct *cbs; cbs = (XmToggleButtonCallbackStruct *)callData; _editShowInherited = cbs->set; SetEditWidget(_editWidget); } static void _wmCloseCB(w, clientData, callData) Widget w; XtPointer clientData; XtPointer callData; { XtPopdown(XmLShellOfWidget((Widget)clientData)); _editDialogUp = False; } static void _editCloseCB(w, clientData, callData) Widget w; XtPointer clientData; XtPointer callData; { XtPopdown(XmLShellOfWidget(w)); _editDialogUp = False; } /* Callbacks which manipulate the Widget Editor */ static void folderCB(w, clientData, callData) Widget w; XtPointer clientData; XtPointer callData; { XmLFolderCallbackStruct *cbs; extern Widget _folder, _grid, _progress, _tree; cbs = (XmLFolderCallbackStruct *)callData; switch (cbs->pos) { case 2: _editWidget = _grid; break; case 3: _editWidget = _tree; break; case 4: _editWidget = _folder; break; case 5: _editWidget = _progress; break; default: _editWidget = 0; break; } if (_editDialogUp == True) SetEditWidget(_editWidget); } static void editCB(w, clientData, callData) Widget w; XtPointer clientData; XtPointer callData; { SetEditWidget(_editWidget); XtPopup(_editDialog, XtGrabNone); _editDialogUp = True; } /* Utility to add a sample tab and form to a folder, returning the form in the sample Folder created. */ static Widget AddWidgetSample(folder, name, desc) Widget folder; char *name, *desc; { Widget form, sampleFolder, sampleForm; XmString str; char buf[20]; int i; sprintf(buf, "%s Widget", name); str = XmStringCreateSimple(buf); form = XmLFolderAddTabForm(folder, str); XmStringFree(str); sampleFolder = XtVaCreateManagedWidget("sampleFolder", xmlFolderWidgetClass, form, XmNtabPlacement, XmFOLDER_RIGHT, XmNleftAttachment, XmATTACH_FORM, XmNtopAttachment, XmATTACH_FORM, XmNrightAttachment, XmATTACH_FORM, XmNbottomAttachment, XmATTACH_POSITION, XmNbottomPosition, 55, XmNtabsPerRow, 3, NULL); for (i = 0; i < 3; i++) { if (!i) sprintf(buf, "%s One", name); else if (i == 1) sprintf(buf, "%s Two", name); else sprintf(buf, "%s Three", name); str = XmStringCreateSimple(buf); XmLFolderAddTab(sampleFolder, str); XmStringFree(str); } sampleForm = XtVaCreateManagedWidget("sampleForm", xmFormWidgetClass, sampleFolder, NULL); CreateText(form, desc, sampleFolder, 1); return sampleForm; } static void CreateText(form, data, topWidget, scrollVert) Widget form; char *data; Widget topWidget; int scrollVert; { Widget text, sb; int n; Arg args[20]; XtSetArg(args[0], XmNleftAttachment, XmATTACH_FORM); XtSetArg(args[1], XmNrightAttachment, XmATTACH_FORM); XtSetArg(args[2], XmNbottomAttachment, XmATTACH_FORM); XtSetArg(args[3], XmNwordWrap, True); XtSetArg(args[4], XmNscrollHorizontal, False); XtSetArg(args[5], XmNeditMode, XmMULTI_LINE_EDIT); XtSetArg(args[6], XmNeditable, False); XtSetArg(args[7], XmNcursorPositionVisible, False); XtSetArg(args[8], XmNhighlightThickness, 0); XtSetArg(args[9], XmNtopAttachment, XmATTACH_WIDGET); XtSetArg(args[10], XmNtopWidget, topWidget); n = 11; if (!scrollVert) { XtSetArg(args[11], XmNscrollVertical, False); n = 12; } text = XmCreateScrolledText(form, "text", args, n); XmTextSetString(text, data); XtManageChild(text); XtVaSetValues(text, XtVaTypedArg, XmNbackground, XmRString, "#D0D0D0", 8, XtVaTypedArg, XmNforeground, XmRString, "black", 6, XmNshadowThickness, 0, NULL); if (scrollVert) { XtVaGetValues(XtParent(text), XmNverticalScrollBar, &sb, NULL); XtVaSetValues(sb, XmNshadowThickness, 2, NULL); } #ifndef MOTIF11 /* multiple drop site in the same area conflict with one another */ /* even if they are unmanaged - a Motif bug */ XmDropSiteUnregister(text); #endif } static void CreatePixmap(w, color, pixmap, pixmask, bits, width, height) Widget w; int color; Pixmap *pixmap, *pixmask; char *bits; int width, height; { Display *dpy; Window root; int depth; XColor col; Pixel black, white, fg, bg; dpy = XtDisplay(w); root = DefaultRootWindow(dpy); depth = DefaultDepthOfScreen(XtScreen(w)); black = BlackPixelOfScreen(XtScreen(w)); white = WhitePixelOfScreen(XtScreen(w)); XtVaGetValues(w, XmNbackground, &bg, NULL); col.red = 0; col.green = 0; col.blue = 0; if (color == 0) fg = white; else if (color == 1) fg = black; else { if (color == 2) col.green = 40000; else if (color == 3) col.red = 45000; else if (color == 4) col.blue = 30000; col.flags = DoRed | DoGreen | DoBlue; XAllocColor(dpy, DefaultColormapOfScreen(XtScreen(w)), &col); fg = col.pixel; } *pixmap = XCreatePixmapFromBitmapData(dpy, root, bits, width, height, fg, bg, depth); *pixmask = XCreatePixmapFromBitmapData(dpy, root, bits, width, height, 1L, 0L, 1); } /* Cover Tab Form */ #define cover_width 230 #define cover_height 240 static unsigned char cover_bits[] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0xc0,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x80,0x07,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00, 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x03,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0xff, 0x01,0x00,0xc0,0x0f,0x00,0x00,0xe0,0x00,0x80,0x03,0x00,0x00,0x3c,0x00,0x00, 0x00,0x00,0x38,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x80,0xff,0x01, 0x00,0x30,0x1c,0x00,0x00,0xe0,0x00,0x80,0x01,0x00,0x00,0x3e,0x00,0x00,0x00, 0x00,0x18,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x60,0xe0,0x01,0x00, 0x0c,0x38,0x00,0x00,0x20,0x00,0x80,0x01,0x00,0x80,0x01,0x00,0x00,0x00,0x00, 0x18,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x10,0xe0,0x00,0x00,0x06, 0x78,0x00,0x00,0x00,0x00,0xc0,0x01,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x1c, 0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x10,0xd0,0x00,0x00,0x03,0x70, 0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x0c,0x00, 0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x18,0xd8,0x00,0x80,0x01,0x70,0x00, 0x00,0x00,0x00,0xc0,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x00, 0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x18,0xc8,0x00,0x80,0x01,0x70,0x18,0x08, 0x30,0xe0,0xc0,0xe0,0x01,0x60,0x00,0x00,0x3c,0x00,0x0f,0x0c,0x1e,0x00,0x00, 0x00,0xc0,0x00,0x00,0x00,0x00,0x18,0xc4,0x00,0xc0,0x01,0x70,0x1e,0x0e,0x3c, 0xf0,0xe1,0xf0,0x01,0x70,0x00,0x00,0x7f,0xc0,0x1f,0x0e,0x1f,0x00,0x00,0x00, 0xc0,0x00,0x00,0x00,0x00,0x38,0xc6,0x00,0xc0,0x00,0xf0,0x0d,0x06,0x1b,0x8c, 0x61,0x98,0x00,0x70,0x00,0x80,0x79,0x60,0x1e,0x86,0x09,0x00,0x00,0x00,0xc0, 0x00,0x00,0x00,0x00,0x08,0xc3,0x00,0xe0,0x00,0x70,0x0c,0x06,0x18,0x8e,0x60, 0x04,0x00,0x30,0x00,0xe0,0x70,0x38,0x1c,0x46,0x00,0x00,0x00,0x00,0xc0,0x00, 0x00,0x00,0x00,0x00,0xe1,0x00,0xe0,0x00,0x70,0x0e,0x07,0x1c,0x06,0x70,0x03, 0x00,0x30,0x00,0x60,0x70,0x18,0x1c,0x37,0x00,0x00,0x00,0x00,0xc0,0x00,0x00, 0x00,0x00,0x80,0xe1,0x00,0xe0,0x00,0x30,0x06,0x03,0x1c,0x07,0xf0,0x01,0x00, 0x30,0x00,0x70,0x70,0x1c,0x1c,0x1f,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00, 0x00,0xc0,0xff,0x00,0xe0,0x00,0x38,0x06,0x03,0x0c,0x07,0xf0,0x01,0x00,0x38, 0x00,0x30,0x70,0x0c,0x1c,0x1f,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00, 0x60,0xe0,0x00,0xe0,0x00,0x18,0x86,0x03,0x0c,0x03,0xb0,0x03,0x00,0x18,0x00, 0x39,0x30,0x0e,0x0c,0x3b,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x20, 0xe0,0x00,0xe0,0x00,0x18,0x87,0x01,0x8e,0x03,0x38,0x03,0x00,0x18,0x80,0x39, 0x38,0x0e,0x8e,0x33,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x10,0x60, 0x00,0xe0,0x00,0x0c,0x83,0x01,0x8e,0x03,0x38,0x03,0x00,0x0c,0x80,0x38,0x18, 0x0e,0x86,0x33,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x1c,0x60,0x00, 0xc0,0x01,0x06,0xc3,0x11,0x86,0x03,0x19,0x07,0x00,0x04,0xe0,0x38,0x0c,0x0e, 0x83,0x71,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0xc0,0x0f,0xe0,0x0c,0xc0, 0x01,0x03,0xb3,0x0d,0xe6,0xc3,0x18,0x06,0x80,0xff,0x7f,0x78,0x06,0x9e,0x81, 0x61,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0xc0,0x07,0xe0,0x07,0x80,0xc7, 0x81,0xcf,0x03,0x9f,0x3f,0x1c,0x0e,0xc0,0xff,0x7f,0xf8,0x03,0xfe,0xc0,0xe1, 0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0xe0,0x01,0x70,0x00,0x00,0xff,0x01, 0xc3,0x00,0x06,0x0f,0x0c,0x0c,0xe0,0xff,0x3f,0xf0,0x00,0x3c,0xc0,0xc0,0x00, 0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x00, 0x00,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x00, 0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x04,0x00, 0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00, 0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x04,0x00,0x00, 0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x00,0x00, 0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x04,0x00,0x00,0x00, 0x00,0x70,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x87,0x00,0x00,0x00,0xc0, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x0e,0x00,0x00,0x00,0x00, 0xe0,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xce,0x00,0x00,0x00,0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x03,0x00,0x00,0x00,0x00,0x80, 0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0xc0,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x0c,0x00,0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06, 0x00,0x18,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00, 0x18,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x1c, 0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x01,0x03,0x00,0x0c,0x30, 0x38,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x07,0x03,0x00,0x0c,0x38,0x3c, 0xd8,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x84,0xe1,0x7f,0x80,0xff,0x39,0x3b,0xc6, 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x91,0x03,0x40,0x0e,0xd8,0x38,0xc7,0x01, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x83,0x81,0x01,0x00,0x06,0x38,0x18,0xe3,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x80,0xc3,0x81,0x01,0x00,0x06,0x1c,0x9c,0x33,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x80,0xc1,0xc0,0x01,0x00,0x07,0x0c,0x9c,0x1b,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x80,0xc1,0xc0,0x01,0x00,0x07,0x0c,0xcc,0x07,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xc0,0xe1,0xc0,0x00,0x00,0x03,0x0c,0xcc,0x01,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0, 0xe1,0xc0,0x00,0x00,0x03,0x0e,0xce,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x71, 0xe4,0x10,0x80,0x43,0x06,0xce,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x6d,0xe3, 0x0c,0x80,0x33,0x06,0xee,0xe3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xe3,0xe0,0x03, 0x80,0x0f,0x07,0xde,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x31,0xc0,0x00,0x00, 0x03,0x01,0x86,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xc0,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0x3f,0xc0,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0x3f,0xc0,0xfc,0xff,0xff,0xff,0xff,0x3f,0xf8,0xff,0xff,0xff,0x1f,0xfe, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x3f,0xc0,0x0c,0xfe,0x1f,0x3e,0xfc,0x07,0xe3,0x0f,0x00,0xff,0x03,0xf0,0x1f, 0xfe,0x0f,0x1f,0xfe,0xcf,0x07,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f, 0xc0,0x0c,0xfe,0x1f,0x3e,0xfc,0xc3,0xdf,0x0f,0x1f,0xfc,0xf1,0xc3,0x1f,0xfe, 0x0f,0x1f,0xfc,0xcf,0x87,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xc0, 0x0c,0xfc,0x0f,0x3e,0xfc,0xf1,0x9f,0x0f,0x3f,0xfc,0xf8,0x87,0x1f,0xfe,0x0f, 0x1f,0xfc,0xcf,0x87,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0x0c, 0xfc,0x0f,0x3e,0xfc,0xf8,0x3f,0x0f,0x7f,0x7c,0xf8,0x0f,0x1f,0xfe,0x0f,0x1f, 0xf8,0xcf,0x87,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0x0c,0xf8, 0x07,0x3e,0x7c,0xf8,0x7f,0x0e,0x7f,0x78,0xfc,0x0f,0x1f,0xfe,0x0f,0x1f,0xf0, 0xcf,0x87,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0x0c,0xf8,0x07, 0x3e,0x7c,0xfc,0xff,0x0f,0x7f,0x38,0xfc,0x1f,0x1e,0xfe,0x0f,0x9f,0xf0,0xcf, 0x87,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0x4c,0xf8,0x17,0x3e, 0x3c,0xfc,0xff,0x0f,0x7f,0x38,0xfe,0x1f,0x1e,0xfe,0x0f,0x9f,0xe0,0xcf,0x87, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0x4c,0xf0,0x13,0x3e,0x3c, 0xfc,0xff,0x0f,0x7f,0x18,0xfe,0x1f,0x1e,0xfe,0x0f,0x9f,0xc1,0xcf,0x87,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0xcc,0xf0,0x13,0x3e,0x3c,0xfc, 0xff,0x0f,0x7f,0x18,0xfe,0x1f,0x1c,0xfe,0x0f,0x9f,0x83,0xcf,0x87,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0xcc,0xe0,0x19,0x3e,0x1c,0xfe,0xff, 0x0f,0x3f,0x1c,0xfe,0x1f,0x1c,0xfe,0x0f,0x9f,0x83,0xcf,0x87,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0xcc,0xe1,0x19,0x3e,0x1c,0xfe,0xff,0x0f, 0x1f,0x1c,0xfe,0x3f,0x1c,0xfe,0x0f,0x9f,0x07,0xcf,0x07,0x80,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x3f,0xc0,0xcc,0xe1,0x1d,0x3e,0x1c,0xfe,0xff,0x0f,0x01, 0x1f,0xfe,0x3f,0x1c,0xfe,0x0f,0x9f,0x0f,0xce,0x07,0x80,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x3f,0xc0,0xcc,0xc1,0x1c,0x3e,0x1c,0xfe,0xff,0x0f,0xc3,0x1f, 0xfe,0x3f,0x1c,0xfe,0x0f,0x9f,0x0f,0xce,0x87,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0x3f,0xc0,0xcc,0xc3,0x1c,0x3e,0x1c,0xfe,0xff,0x0f,0xc3,0x1f,0xfe, 0x3f,0x1c,0xfe,0x0f,0x9f,0x1f,0xcc,0x87,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0x3f,0xc0,0xcc,0x03,0x1e,0x3e,0x1c,0xfc,0xff,0x0f,0x87,0x1f,0xfe,0x1f, 0x1c,0xfe,0x0f,0x9f,0x3f,0xc8,0x87,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x3f,0xc0,0xcc,0x07,0x1e,0x3e,0x1c,0xfc,0xff,0x0f,0x87,0x1f,0xfe,0x1f,0x1e, 0xfe,0x0f,0x9f,0x7f,0xc8,0x87,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f, 0xc0,0xcc,0x07,0x1e,0x3e,0x3c,0xfc,0xff,0x0f,0x0f,0x3f,0xfe,0x1f,0x1e,0xfe, 0x0f,0x9f,0x7f,0xc0,0x87,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xc0, 0xcc,0x07,0x1f,0x3e,0x3c,0xfc,0xff,0x0c,0x0f,0x3f,0xfc,0x1f,0x1e,0xfe,0x0f, 0x9f,0xff,0xc0,0x87,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0xcc, 0x0f,0x1f,0x3e,0x7c,0xf8,0x7f,0x0e,0x1f,0x3e,0xfc,0x0f,0x1f,0xfe,0x0f,0x9f, 0xff,0xc1,0x87,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0xcc,0x8f, 0x1f,0x3e,0xfc,0xf0,0x3f,0x0f,0x1f,0x7e,0xfc,0x8f,0x1f,0xfe,0x0f,0x9f,0xff, 0xc1,0x87,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0xcc,0x9f,0x1f, 0x3e,0xfc,0xe0,0x1f,0x0f,0x3f,0xfc,0xf8,0x87,0x1f,0xfe,0x0f,0x9f,0xff,0xc3, 0x87,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0xcc,0x9f,0x1f,0x3e, 0xfc,0x83,0x87,0x0f,0x3f,0xfc,0xf1,0xc3,0x1f,0x00,0x0c,0x9f,0xff,0xc7,0x07, 0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0xcc,0xff,0x1f,0x3e,0xfc, 0x07,0xe0,0x0f,0x7f,0xf8,0x03,0xf0,0x1f,0x00,0x0c,0x9f,0xff,0xc7,0x07,0x00, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0xfc,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0xfc,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x3f,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xc0,0xf0,0x07,0xf8,0x03,0xfc,0xf9,0x81,0xff,0xff,0x00, 0x00,0xf8,0x0f,0x00,0xfc,0xff,0x7f,0xfe,0xff,0xff,0x01,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xc0,0xe0,0x07,0xf8,0x03,0xfc,0xf8,0x81,0xff,0xff,0x03,0x00, 0xff,0x7f,0x00,0xfc,0xff,0x7f,0xfe,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xc0,0xe0,0x07,0xf8,0x07,0xfc,0xf8,0x81,0xff,0xff,0x0f,0x80,0xff, 0xff,0x01,0xfc,0xff,0x7f,0xfe,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xc0,0xe0,0x0f,0xf8,0x07,0xfc,0xf8,0x81,0xff,0xff,0x1f,0xc0,0xff,0xff, 0x03,0xfc,0xff,0x7f,0xfe,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xc0,0xc0,0x0f,0xfc,0x07,0x7e,0xf8,0x81,0x1f,0xc0,0x3f,0xe0,0x0f,0xf8,0x07, 0xfc,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0, 0xc0,0x0f,0xfc,0x07,0x7e,0xf8,0x81,0x1f,0x00,0x3f,0xf0,0x07,0xe0,0x0f,0xfc, 0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xc0, 0x0f,0xbc,0x0f,0x7e,0xf8,0x81,0x1f,0x00,0x7f,0xf8,0x03,0xc0,0x0f,0xfc,0x00, 0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x80,0x1f, 0xbc,0x0f,0x3e,0xf8,0x81,0x1f,0x00,0x7e,0xf8,0x01,0x00,0x00,0xfc,0x00,0x00, 0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x80,0x1f,0xbe, 0x0f,0x3f,0xf8,0x81,0x1f,0x00,0xfe,0xf8,0x01,0x00,0x00,0xfc,0x00,0x00,0x00, 0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x80,0x1f,0xbe,0x0f, 0x3f,0xf8,0x81,0x1f,0x00,0xfc,0xfc,0x00,0x00,0x00,0xfc,0xff,0x3f,0x00,0xfc, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x1f,0x1e,0x1f,0x1f, 0xf8,0x81,0x1f,0x00,0xfc,0xfc,0x00,0xfe,0x0f,0xfc,0xff,0x3f,0x00,0xfc,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x3f,0x1e,0x1f,0x1f,0xf8, 0x81,0x1f,0x00,0xfc,0xfc,0x00,0xfe,0x0f,0xfc,0xff,0x3f,0x00,0xfc,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x3f,0x1f,0x9f,0x1f,0xf8,0x81, 0x1f,0x00,0xfc,0xfc,0x00,0xfe,0x0f,0xfc,0xff,0x3f,0x00,0xfc,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x3e,0x1f,0x9e,0x0f,0xf8,0x81,0x1f, 0x00,0xfc,0xfc,0x00,0xfe,0x0f,0xfc,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x7e,0x0f,0xbe,0x0f,0xf8,0x81,0x1f,0x00, 0xfc,0xfc,0x01,0x80,0x0f,0xfc,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xc0,0x00,0x7e,0x0f,0xbe,0x0f,0xf8,0x81,0x1f,0x00,0x7e, 0xf8,0x01,0x80,0x0f,0xfc,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xc0,0x00,0xfc,0x0f,0xfc,0x07,0xf8,0x81,0x1f,0x00,0x7f,0xf8, 0x03,0xc0,0x0f,0xfc,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xc0,0x00,0xfc,0x07,0xfc,0x07,0xf8,0x81,0x1f,0x00,0x3f,0xf0,0x07, 0xe0,0x0f,0xfc,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xc0,0x00,0xf8,0x07,0xfc,0x07,0xf8,0x81,0x1f,0xc0,0x3f,0xe0,0x1f,0xf8, 0x0f,0xfc,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xc0,0x00,0xf8,0x07,0xfc,0x03,0xf8,0x81,0xff,0xff,0x1f,0xc0,0xff,0xff,0x0f, 0xfc,0xff,0xff,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0, 0x00,0xf8,0x07,0xf8,0x03,0xf8,0x81,0xff,0xff,0x0f,0x80,0xff,0x7f,0x0f,0xfc, 0xff,0xff,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00, 0xf0,0x03,0xf8,0x03,0xf8,0x81,0xff,0xff,0x03,0x00,0xfe,0x3f,0x0f,0xfc,0xff, 0xff,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0xf0, 0x03,0xf8,0x01,0xf8,0x81,0xff,0xff,0x00,0x00,0xf0,0x07,0x0f,0xfc,0xff,0xff, 0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xc0,0x01,0x00,0x3c,0xf0,0xff,0x07,0xe0,0xff,0x0f,0x00,0x80,0x03,0x00,0xfe, 0xff,0xe1,0x03,0x00,0x38,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0, 0x01,0x00,0x3c,0xf0,0x00,0x1f,0xe0,0x01,0x3f,0x00,0x80,0x03,0x00,0x1e,0xe0, 0xc3,0x07,0x00,0x1c,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01, 0x00,0x3c,0xf0,0x00,0x3c,0xe0,0x01,0x78,0x00,0xc0,0x07,0x00,0x1e,0x80,0x8f, 0x0f,0x00,0x0e,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x00, 0x3c,0xf0,0x00,0x3c,0xe0,0x01,0xf8,0x00,0xc0,0x07,0x00,0x1e,0x00,0x0f,0x1f, 0x00,0xe7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x00,0x3c, 0xf0,0x00,0x3c,0xe0,0x01,0xf0,0x00,0x60,0x0f,0x00,0x1e,0x00,0x0f,0x1e,0x80, 0x43,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x00,0x3c,0xf0, 0x00,0x3c,0xe0,0x01,0xf0,0x00,0x30,0x1f,0x00,0x1e,0x00,0x0f,0x3c,0x80,0x41, 0xc5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x00,0x3c,0xf0,0x00, 0x3c,0xe0,0x01,0x78,0x00,0x30,0x1e,0x00,0x1e,0x00,0x0f,0x78,0xc0,0x01,0xc0, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x00,0x3c,0xf0,0x00,0x1c, 0xe0,0x01,0x78,0x00,0x18,0x3c,0x00,0x1e,0x80,0x07,0xf8,0xe0,0x00,0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x00,0x3c,0xf0,0x80,0x07,0xe0, 0x01,0x3e,0x00,0x18,0x3c,0x00,0x1e,0xc0,0x03,0xf0,0x61,0x00,0xc0,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x00,0x3c,0xf0,0xff,0x00,0xe0,0xff, 0x07,0x00,0x0c,0x78,0x00,0xfe,0x7f,0x00,0xe0,0x19,0x00,0xc0,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x00,0x3c,0xf0,0xc0,0x0f,0xe0,0x7f,0x00, 0x00,0x0c,0xf8,0x00,0xfe,0x07,0x00,0xc0,0x1f,0x00,0xc0,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xc0,0x01,0x00,0x3c,0xf0,0x00,0x1e,0xe0,0xfd,0x00,0x00, 0xfe,0xff,0x00,0x9e,0x0f,0x00,0x80,0x0f,0x00,0xc0,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xc0,0x01,0x00,0x3c,0xf0,0x00,0x7c,0xe0,0xf9,0x00,0x00,0xff, 0xff,0x01,0x1e,0x1f,0x00,0x00,0x0f,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xc0,0x01,0x00,0x3c,0xf0,0x00,0x78,0xe0,0xf1,0x03,0x00,0x03,0xe0, 0x01,0x1e,0x3e,0x00,0x00,0x0f,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xc0,0x01,0x00,0x3c,0xf0,0x00,0x78,0xe0,0xc1,0x07,0x80,0x01,0xc0,0x03, 0x1e,0x78,0x00,0x00,0x0f,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xc0,0x01,0x00,0x3c,0xf0,0x00,0x78,0xe0,0x81,0x07,0x80,0x01,0xc0,0x03,0x1e, 0xf0,0x00,0x00,0x0f,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0, 0x01,0x00,0x3c,0xf0,0x00,0x78,0xe0,0x01,0x1f,0xc0,0x00,0x80,0x07,0x1e,0xe0, 0x03,0x00,0x0f,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01, 0x00,0x3c,0xf0,0x00,0x78,0xe0,0x01,0x3e,0xe0,0x00,0x00,0x0f,0x1e,0xc0,0x07, 0x00,0x0f,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x00, 0x3c,0xf0,0x00,0x3c,0xe0,0x01,0x7c,0x60,0x00,0x00,0x0e,0x1e,0x80,0x07,0x00, 0x0f,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x1f,0x3c, 0xf0,0x00,0x0f,0xe0,0x01,0xf8,0x71,0x00,0x00,0x1e,0x1e,0x00,0x1f,0x00,0x0f, 0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0x1f,0x3c,0xf0, 0xff,0x03,0xe0,0x01,0xe0,0x33,0x00,0x00,0x1c,0x1e,0x00,0x3e,0x00,0x0f,0x00, 0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0, 0x03,0x00,0xfc,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x0f, 0x00,0xfe,0x01,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x1c,0x00, 0x87,0x03,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x18,0x00,0x03, 0x03,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x18,0x80,0x01,0x06, 0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x80,0x01,0x06,0xc0, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x80,0x01,0x06,0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x07,0x80,0x01,0x06,0xc0,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x0f,0x80,0x01,0x06,0xc0,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x80,0x01,0x06,0xc0,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x30,0x80,0x01,0x06,0xc0,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x30,0x80,0x01,0x06,0xc0,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x30,0x80,0x01,0x06,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x0c,0x30,0x80,0x01,0x06,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x1c,0x38,0x00,0x03,0x03,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18, 0x1c,0x00,0x87,0x03,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x0f, 0x06,0xfe,0x01,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x03,0x06, 0xfc,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00, 0x00,0x80,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00, 0x40,0x20,0x40,0x70,0x38,0x3c,0x00,0x82,0xc3,0xe1,0x40,0x90,0x00,0x00,0x48, 0x00,0x00,0x78,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x20, 0x46,0x60,0x88,0x44,0x04,0x00,0x43,0x24,0x12,0xc1,0x18,0x00,0x00,0x08,0x00, 0x00,0x84,0x00,0x12,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x10,0x89, 0x50,0x88,0x44,0x02,0x80,0x42,0x24,0x12,0xc0,0x98,0x18,0xe5,0x48,0x1a,0x0e, 0x84,0x38,0x7f,0x44,0x8e,0x72,0x00,0x00,0xc0,0x00,0x00,0x00,0x90,0x90,0x40, 0x88,0x44,0x1e,0x00,0x42,0x24,0xd2,0x40,0x95,0x24,0x13,0x49,0x26,0x11,0x04, 0x44,0x52,0x44,0x91,0x89,0x00,0x00,0xc0,0x00,0x00,0x00,0x90,0x80,0x40,0xc8, 0x64,0x22,0x00,0x42,0x26,0x33,0x41,0x95,0x04,0x11,0x49,0x22,0x11,0x78,0x44, 0x92,0x2a,0x90,0x88,0x00,0x00,0xc0,0x00,0x00,0x00,0x90,0x80,0x40,0xb0,0x58, 0x20,0x00,0x82,0xc5,0x12,0x41,0x95,0x04,0x11,0x49,0x22,0x1f,0x80,0x44,0x92, 0x2a,0x9e,0xf8,0x00,0x00,0xc0,0x00,0x00,0x00,0x90,0x90,0x40,0x80,0x40,0x20, 0x00,0x02,0x04,0x12,0x41,0x95,0x04,0x11,0x49,0x22,0x01,0x84,0x44,0x92,0x2a, 0x91,0x08,0x00,0x00,0xc0,0x00,0x00,0x00,0x10,0x89,0x40,0x88,0x44,0x22,0x00, 0x42,0x24,0x12,0x41,0x92,0x24,0x11,0x49,0x22,0x11,0x84,0x44,0x12,0x11,0x99, 0x88,0x00,0x00,0xc0,0x00,0x00,0x00,0x20,0x46,0x40,0x70,0x38,0x1c,0x02,0x82, 0xc3,0xe1,0x40,0x92,0x18,0xe1,0x48,0x22,0x0e,0x78,0x38,0x32,0x11,0x96,0x70, 0x00,0x00,0xc0,0x00,0x00,0x00,0x40,0x20,0x00,0x00,0x00,0x00,0x02,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xc0,0x00,0x00,0x00,0x80,0x1f,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0 }; Pixmap coverPixmapW, coverPixmapB, coverPixmask; GC coverGC; static void CoverExpose(); void AddCoverTabForm(folder) Widget folder; { Widget form, da; Display *dpy; Window root; XmString str; str = XmStringCreateSimple("Cover Page"); form = XmLFolderAddTabForm(folder, str); XmStringFree(str); CreatePixmap(form, 0, &coverPixmapW, &coverPixmask, (char *)cover_bits, cover_width, cover_height); CreatePixmap(form, 1, &coverPixmapB, &coverPixmask, (char *)cover_bits, cover_width, cover_height); dpy = XtDisplay(form); root = DefaultRootWindow(dpy); coverGC = XCreateGC(dpy, root, 0, NULL); da = XtVaCreateManagedWidget("drawArea", xmDrawingAreaWidgetClass, form, XmNleftAttachment, XmATTACH_FORM, XmNrightAttachment, XmATTACH_FORM, XmNtopAttachment, XmATTACH_FORM, XmNbottomAttachment, XmATTACH_FORM, NULL); XtAddCallback(da, XmNexposeCallback, CoverExpose, NULL); } static void CoverExpose(w, clientData, callData) Widget w; XtPointer clientData, callData; { XRectangle rect; Pixel black, white; XClearArea(XtDisplay(w), XtWindow(w), 0, 0, 0, 0, False); black = BlackPixelOfScreen(XtScreen(w)); white = WhitePixelOfScreen(XtScreen(w)); rect.x = 1; rect.y = 1; XtVaGetValues(w, XmNwidth, &rect.width, XmNheight, &rect.height, NULL); XmLPixmapDraw(w, coverPixmapW, coverPixmask, cover_width, cover_height, XmALIGNMENT_CENTER, coverGC, &rect, &rect); rect.x = 0; rect.y = 0; XmLPixmapDraw(w, coverPixmapB, coverPixmask, cover_width, cover_height, XmALIGNMENT_CENTER, coverGC, &rect, &rect); } /* Intro Tab Form */ #define logo_width 230 #define logo_height 90 static unsigned char logo_bits[] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xf8,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc0,0xf8,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc0,0xf8,0xff,0xff,0xff,0xff,0x7f, 0xf0,0xff,0xff,0xff,0x3f,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc0,0x18,0xfc,0x3f,0x7c,0xf8,0x0f,0xc6, 0x1f,0x00,0xfe,0x07,0xe0,0x3f,0xfc,0x1f,0x3e,0xfc,0x9f,0x0f,0x00,0xfe,0xff, 0xff,0xff,0xff,0xff,0xff,0x7f,0xc0,0x18,0xfc,0x3f,0x7c,0xf8,0x87,0xbf,0x1f, 0x3e,0xf8,0xe3,0x87,0x3f,0xfc,0x1f,0x3e,0xf8,0x9f,0x0f,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x7f,0xc0,0x18,0xf8,0x1f,0x7c,0xf8,0xe3,0x3f,0x1f,0x7e, 0xf8,0xf1,0x0f,0x3f,0xfc,0x1f,0x3e,0xf8,0x9f,0x0f,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x7f,0xc0,0x18,0xf8,0x1f,0x7c,0xf8,0xf1,0x7f,0x1e,0xfe,0xf8, 0xf0,0x1f,0x3e,0xfc,0x1f,0x3e,0xf0,0x9f,0x0f,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0x7f,0xc0,0x18,0xf0,0x0f,0x7c,0xf8,0xf0,0xff,0x1c,0xfe,0xf0,0xf8, 0x1f,0x3e,0xfc,0x1f,0x3e,0xe0,0x9f,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0x7f,0xc0,0x18,0xf0,0x0f,0x7c,0xf8,0xf8,0xff,0x1f,0xfe,0x70,0xf8,0x3f, 0x3c,0xfc,0x1f,0x3e,0xe1,0x9f,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x7f,0xc0,0x98,0xf0,0x2f,0x7c,0x78,0xf8,0xff,0x1f,0xfe,0x70,0xfc,0x3f,0x3c, 0xfc,0x1f,0x3e,0xc1,0x9f,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, 0xc0,0x98,0xe0,0x27,0x7c,0x78,0xf8,0xff,0x1f,0xfe,0x30,0xfc,0x3f,0x3c,0xfc, 0x1f,0x3e,0x83,0x9f,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc0, 0x98,0xe1,0x27,0x7c,0x78,0xf8,0xff,0x1f,0xfe,0x30,0xfc,0x3f,0x38,0xfc,0x1f, 0x3e,0x07,0x9f,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc0,0x98, 0xc1,0x33,0x7c,0x38,0xfc,0xff,0x1f,0x7e,0x38,0xfc,0x3f,0x38,0xfc,0x1f,0x3e, 0x07,0x9f,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc0,0x98,0xc3, 0x33,0x7c,0x38,0xfc,0xff,0x1f,0x3e,0x38,0xfc,0x7f,0x38,0xfc,0x1f,0x3e,0x0f, 0x9e,0x0f,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc0,0x98,0xc3,0x3b, 0x7c,0x38,0xfc,0xff,0x1f,0x02,0x3e,0xfc,0x7f,0x38,0xfc,0x1f,0x3e,0x1f,0x9c, 0x0f,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc0,0x98,0x83,0x39,0x7c, 0x38,0xfc,0xff,0x1f,0x86,0x3f,0xfc,0x7f,0x38,0xfc,0x1f,0x3e,0x1f,0x9c,0x0f, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc0,0x98,0x87,0x39,0x7c,0x38, 0xfc,0xff,0x1f,0x86,0x3f,0xfc,0x7f,0x38,0xfc,0x1f,0x3e,0x3f,0x98,0x0f,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc0,0x98,0x07,0x3c,0x7c,0x38,0xf8, 0xff,0x1f,0x0e,0x3f,0xfc,0x3f,0x38,0xfc,0x1f,0x3e,0x7f,0x90,0x0f,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc0,0x98,0x0f,0x3c,0x7c,0x38,0xf8,0xff, 0x1f,0x0e,0x3f,0xfc,0x3f,0x3c,0xfc,0x1f,0x3e,0xff,0x90,0x0f,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0x7f,0xc0,0x98,0x0f,0x3c,0x7c,0x78,0xf8,0xff,0x1f, 0x1e,0x7e,0xfc,0x3f,0x3c,0xfc,0x1f,0x3e,0xff,0x80,0x0f,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x7f,0xc0,0x98,0x0f,0x3e,0x7c,0x78,0xf8,0xff,0x19,0x1e, 0x7e,0xf8,0x3f,0x3c,0xfc,0x1f,0x3e,0xff,0x81,0x0f,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x7f,0xc0,0x98,0x1f,0x3e,0x7c,0xf8,0xf0,0xff,0x1c,0x3e,0x7c, 0xf8,0x1f,0x3e,0xfc,0x1f,0x3e,0xff,0x83,0x0f,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0x7f,0xc0,0x98,0x1f,0x3f,0x7c,0xf8,0xe1,0x7f,0x1e,0x3e,0xfc,0xf8, 0x1f,0x3f,0xfc,0x1f,0x3e,0xff,0x83,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0x7f,0xc0,0x98,0x3f,0x3f,0x7c,0xf8,0xc1,0x3f,0x1e,0x7e,0xf8,0xf1,0x0f, 0x3f,0xfc,0x1f,0x3e,0xff,0x87,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x7f,0xc0,0x98,0x3f,0x3f,0x7c,0xf8,0x07,0x0f,0x1f,0x7e,0xf8,0xe3,0x87,0x3f, 0x00,0x18,0x3e,0xff,0x8f,0x0f,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, 0xc0,0x98,0xff,0x3f,0x7c,0xf8,0x0f,0xc0,0x1f,0xfe,0xf0,0x07,0xe0,0x3f,0x00, 0x18,0x3e,0xff,0x8f,0x0f,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc0, 0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc0,0xf8, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc0,0xf8,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc0,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xe0,0x0f,0xf0,0x07, 0xf8,0xf3,0x03,0xff,0xff,0x01,0x00,0xf0,0x1f,0x00,0xf8,0xff,0xff,0xfc,0xff, 0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xc0,0x0f,0xf0,0x07,0xf8, 0xf1,0x03,0xff,0xff,0x07,0x00,0xfe,0xff,0x00,0xf8,0xff,0xff,0xfc,0xff,0xff, 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xc0,0x0f,0xf0,0x0f,0xf8,0xf1, 0x03,0xff,0xff,0x1f,0x00,0xff,0xff,0x03,0xf8,0xff,0xff,0xfc,0xff,0xff,0x03, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xc0,0x1f,0xf0,0x0f,0xf8,0xf1,0x03, 0xff,0xff,0x3f,0x80,0xff,0xff,0x07,0xf8,0xff,0xff,0xfc,0xff,0xff,0x03,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x80,0x1f,0xf8,0x0f,0xfc,0xf0,0x03,0x3f, 0x80,0x7f,0xc0,0x1f,0xf0,0x0f,0xf8,0x01,0x00,0x00,0xf8,0x01,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xc0,0x80,0x1f,0xf8,0x0f,0xfc,0xf0,0x03,0x3f,0x00, 0x7e,0xe0,0x0f,0xc0,0x1f,0xf8,0x01,0x00,0x00,0xf8,0x01,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xc0,0x80,0x1f,0x78,0x1f,0xfc,0xf0,0x03,0x3f,0x00,0xfe, 0xf0,0x07,0x80,0x1f,0xf8,0x01,0x00,0x00,0xf8,0x01,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xc0,0x00,0x3f,0x78,0x1f,0x7c,0xf0,0x03,0x3f,0x00,0xfc,0xf0, 0x03,0x00,0x00,0xf8,0x01,0x00,0x00,0xf8,0x01,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xc0,0x00,0x3f,0x7c,0x1f,0x7e,0xf0,0x03,0x3f,0x00,0xfc,0xf1,0x03, 0x00,0x00,0xf8,0x01,0x00,0x00,0xf8,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xc0,0x00,0x3f,0x7c,0x1f,0x7e,0xf0,0x03,0x3f,0x00,0xf8,0xf9,0x01,0x00, 0x00,0xf8,0xff,0x7f,0x00,0xf8,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xc0,0x00,0x3e,0x3c,0x3e,0x3e,0xf0,0x03,0x3f,0x00,0xf8,0xf9,0x01,0xfc,0x1f, 0xf8,0xff,0x7f,0x00,0xf8,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0, 0x00,0x7e,0x3c,0x3e,0x3e,0xf0,0x03,0x3f,0x00,0xf8,0xf9,0x01,0xfc,0x1f,0xf8, 0xff,0x7f,0x00,0xf8,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00, 0x7e,0x3e,0x3e,0x3f,0xf0,0x03,0x3f,0x00,0xf8,0xf9,0x01,0xfc,0x1f,0xf8,0xff, 0x7f,0x00,0xf8,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x7c, 0x3e,0x3c,0x1f,0xf0,0x03,0x3f,0x00,0xf8,0xf9,0x01,0xfc,0x1f,0xf8,0x01,0x00, 0x00,0xf8,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0xfc,0x1e, 0x7c,0x1f,0xf0,0x03,0x3f,0x00,0xf8,0xf9,0x03,0x00,0x1f,0xf8,0x01,0x00,0x00, 0xf8,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0xfc,0x1e,0x7c, 0x1f,0xf0,0x03,0x3f,0x00,0xfc,0xf0,0x03,0x00,0x1f,0xf8,0x01,0x00,0x00,0xf8, 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0xf8,0x1f,0xf8,0x0f, 0xf0,0x03,0x3f,0x00,0xfe,0xf0,0x07,0x80,0x1f,0xf8,0x01,0x00,0x00,0xf8,0x01, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0xf8,0x0f,0xf8,0x0f,0xf0, 0x03,0x3f,0x00,0x7e,0xe0,0x0f,0xc0,0x1f,0xf8,0x01,0x00,0x00,0xf8,0x01,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0xf0,0x0f,0xf8,0x0f,0xf0,0x03, 0x3f,0x80,0x7f,0xc0,0x3f,0xf0,0x1f,0xf8,0x01,0x00,0x00,0xf8,0x01,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0xf0,0x0f,0xf8,0x07,0xf0,0x03,0xff, 0xff,0x3f,0x80,0xff,0xff,0x1f,0xf8,0xff,0xff,0x01,0xf8,0x01,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0xf0,0x0f,0xf0,0x07,0xf0,0x03,0xff,0xff, 0x1f,0x00,0xff,0xff,0x1e,0xf8,0xff,0xff,0x01,0xf8,0x01,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xc0,0x00,0xe0,0x07,0xf0,0x07,0xf0,0x03,0xff,0xff,0x07, 0x00,0xfc,0x7f,0x1e,0xf8,0xff,0xff,0x01,0xf8,0x01,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xc0,0x00,0xe0,0x07,0xf0,0x03,0xf0,0x03,0xff,0xff,0x01,0x00, 0xe0,0x0f,0x1e,0xf8,0xff,0xff,0x01,0xf8,0x01,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x78,0xe0,0xff,0x0f,0xc0,0xff, 0x1f,0x00,0x00,0x07,0x00,0xfc,0xff,0xc3,0x07,0x00,0x70,0xc0,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x78,0xe0,0x01,0x3e,0xc0,0x03,0x7e, 0x00,0x00,0x07,0x00,0x3c,0xc0,0x87,0x0f,0x00,0x38,0xc0,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x78,0xe0,0x01,0x78,0xc0,0x03,0xf0,0x00, 0x80,0x0f,0x00,0x3c,0x00,0x1f,0x1f,0x00,0x1c,0xc0,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x80,0x03,0x00,0x78,0xe0,0x01,0x78,0xc0,0x03,0xf0,0x01,0x80, 0x0f,0x00,0x3c,0x00,0x1e,0x3e,0x00,0xce,0xcf,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x80,0x03,0x00,0x78,0xe0,0x01,0x78,0xc0,0x03,0xe0,0x01,0xc0,0x1e, 0x00,0x3c,0x00,0x1e,0x3c,0x00,0x87,0xce,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x80,0x03,0x00,0x78,0xe0,0x01,0x78,0xc0,0x03,0xe0,0x01,0x60,0x3e,0x00, 0x3c,0x00,0x1e,0x78,0x00,0x83,0xca,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x80,0x03,0x00,0x78,0xe0,0x01,0x78,0xc0,0x03,0xf0,0x00,0x60,0x3c,0x00,0x3c, 0x00,0x1e,0xf0,0x80,0x03,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80, 0x03,0x00,0x78,0xe0,0x01,0x38,0xc0,0x03,0xf0,0x00,0x30,0x78,0x00,0x3c,0x00, 0x0f,0xf0,0xc1,0x01,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03, 0x00,0x78,0xe0,0x01,0x0f,0xc0,0x03,0x7c,0x00,0x30,0x78,0x00,0x3c,0x80,0x07, 0xe0,0xc3,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x00, 0x78,0xe0,0xff,0x01,0xc0,0xff,0x0f,0x00,0x18,0xf0,0x00,0xfc,0xff,0x00,0xc0, 0x33,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x78, 0xe0,0x81,0x1f,0xc0,0xff,0x00,0x00,0x18,0xf0,0x01,0xfc,0x0f,0x00,0x80,0x3f, 0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x78,0xe0, 0x01,0x3c,0xc0,0xfb,0x01,0x00,0xfc,0xff,0x01,0x3c,0x1f,0x00,0x00,0x1f,0x00, 0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x78,0xe0,0x01, 0xf8,0xc0,0xf3,0x01,0x00,0xfe,0xff,0x03,0x3c,0x3e,0x00,0x00,0x1e,0x00,0xc0, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x78,0xe0,0x01,0xf0, 0xc0,0xe3,0x07,0x00,0x06,0xc0,0x03,0x3c,0x7c,0x00,0x00,0x1e,0x00,0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x78,0xe0,0x01,0xf0,0xc0, 0x83,0x0f,0x00,0x03,0x80,0x07,0x3c,0xf0,0x00,0x00,0x1e,0x00,0xc0,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x78,0xe0,0x01,0xf0,0xc0,0x03, 0x0f,0x00,0x03,0x80,0x07,0x3c,0xe0,0x01,0x00,0x1e,0x00,0xc0,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x78,0xe0,0x01,0xf0,0xc0,0x03,0x3e, 0x80,0x01,0x00,0x0f,0x3c,0xc0,0x07,0x00,0x1e,0x00,0xc0,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x78,0xe0,0x01,0xf0,0xc0,0x03,0x7c,0xc0, 0x01,0x00,0x1e,0x3c,0x80,0x0f,0x00,0x1e,0x00,0xc0,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x80,0x03,0x00,0x78,0xe0,0x01,0x78,0xc0,0x03,0xf8,0xc0,0x00, 0x00,0x1c,0x3c,0x00,0x0f,0x00,0x1e,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x80,0x03,0x3e,0x78,0xe0,0x01,0x1e,0xc0,0x03,0xf0,0xe3,0x00,0x00, 0x3c,0x3c,0x00,0x3e,0x00,0x1e,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x80,0xff,0x3f,0x78,0xe0,0xff,0x07,0xc0,0x03,0xc0,0x67,0x00,0x00,0x38, 0x3c,0x00,0x7c,0x00,0x1e,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0 }; void AddIntroTabForm(folder) Widget folder; { Widget form, label; Pixmap pixmap, pixmask; XmString str; static char *desc = "Welcome to a Quick Look at the Microline Widget Library version 3.0. \ This program presents an overview of widgets contained in the library.\ \n\n\ If you understand widget resources, you may want to try clicking the Editor \ button to display and edit some of the example widget''s resources. \ Please note that the editor is blank for the Cover Page and this \ Introduction screen.\ \n\n\ Further information on the library including pricing, supported platforms, \ licensing policies, etc. may be found on our web site \ http://www.mlsoft.com. You can also email us at info@mlsoft.com.\ \n\n\ Microline Widget Library is a trademark of Microline Software. \ All other trademarks are the property of their respective owners."; str = XmStringCreateSimple("Introduction"); form = XmLFolderAddTabForm(folder, str); XmStringFree(str); CreatePixmap(form, 1, &pixmap, &pixmask, (char *)logo_bits, logo_width, logo_height); label = XtVaCreateManagedWidget("label", xmLabelWidgetClass, form, XmNlabelType, XmPIXMAP, XmNlabelPixmap, pixmap, XmNmarginHeight, 25, XmNtopAttachment, XmATTACH_FORM, XmNleftAttachment, XmATTACH_FORM, XmNrightAttachment, XmATTACH_FORM, NULL); CreateText(form, desc, label, 0); } /* Folder Tab Form */ #define sphere_width 10 #define sphere_height 10 static unsigned char sphere_bits[] = { 0x00, 0x00, 0x78, 0x00, 0xf4, 0x00, 0xe2, 0x01, 0xf6, 0x01, 0xfe, 0x01, 0xfe, 0x01, 0xfc, 0x00, 0x78, 0x00, 0x00, 0x00}; #define cross_width 10 #define cross_height 10 static unsigned char cross_bits[] = { 0x00, 0x00, 0x30, 0x00, 0xb4, 0x00, 0x30, 0x00, 0xfe, 0x01, 0xfe, 0x01, 0x30, 0x00, 0xb4, 0x00, 0x30, 0x00, 0x00, 0x00}; static Pixmap spherePixmap; static Pixmap spherePixmask; static Pixmap crossPixmap; static Pixmap crossPixmask; static void FolderSwitchCB(); Widget _folder; void AddFolderTabForm(folder) Widget folder; { Widget form, w, sampleForm; XmString str; int i; static char *labels[] = { "Configuration", "Appearance", "Documents", "Keys" }; static char *desc = "The Folder widget provides a folder containing single or \ multiple rows of tabs along the top, bottom, left or right \ and an area managed by the tabs in the center.\ \n\n\ The Folder One sample contains a single row of tabs with arc-style \ corners, each containing a pixmap image.\ \n\n\ The Folder Two sample also contains a single row of tabs but placed on the \ bottom with the \"none\" corner style. If you increase \ the width of the demo program, you will notice that this row of tabs \ will always fill the entire row with the individual tabs taking up \ a width proportional to their contents and the width of the row.\ \n\n\ The Folder Three sample contains tabs in 2 rows placed on the right. \ Again, the size of the tabs are proportional to the size of \ their contents and will fit to the row.\ \n\n\ The Folder is a Manager widget and each tab \ consists of a Primitive widget (usually a DrawnButton widget) \ surrounded by tab decorations including an optional pixmap. \ Any non-Primitive widget children of the Folder are placed in \ the center area. Tab widgets may be assigned a widget \ in the center area of the folder to display/manage when the \ tab is selected or the application can change the contents \ in the center area itself as tabs are selected.\ \n\n\ Resources exist to set the style of the corners, pixmaps \ to display in the tabs, number of tabs per row, \ various colors, sizes and spacing in and around the tabs. \ Also, since the tabs themselves \ have Primitive widgets like DrawnButtons inside of them, they \ retain all display abilities of their respective Primitive \ widgets. DrawnButton tabs, for example, may be displayed with \ different fonts, character sets, colors, alignments, etc.\ \n\n\ Tabs may be be added or deleted by adding or deleting \ Primitive-based widgets to the Folder. Callbacks are provided \ which can notify an application when a tab is activated, allowing \ the application to either accept or reject the activation.\ \n\n\ The 3.0 release adds multiple rows of tabs, improved tab layout \ and also a rewrite of the Folder''s geometry management.\ \n\n\ Keyboard traversal of the tabs is supported by using the arrow \ keys to move from one tab to the next. Tabs may be activated \ by either selection with the mouse or by activating their \ underlying Primitive widget. For example, DrawnButton tabs \ may be activated by pressing the space bar when focus is in the tab."; form = AddWidgetSample(folder, "Folder", desc); _folder = XtVaCreateManagedWidget("sampleFolder", xmlFolderWidgetClass, form, XmNleftAttachment, XmATTACH_FORM, XmNtopAttachment, XmATTACH_FORM, XmNrightAttachment, XmATTACH_FORM, XmNbottomAttachment, XmATTACH_FORM, XmNmarginWidth, 4, NULL); CreatePixmap(_folder, 4, &spherePixmap, &spherePixmask, (char *)sphere_bits, sphere_width, sphere_height); CreatePixmap(_folder, 2, &crossPixmap, &crossPixmask, (char *)cross_bits, cross_width, cross_height); for (i = 0; i < 4; i++) { str = XmStringCreateSimple(labels[i]); w = XmLFolderAddTab(_folder, str); XmStringFree(str); if (i % 2) XtVaSetValues(w, XmNtabPixmap, crossPixmap, XmNtabInactivePixmap, crossPixmap, NULL); else XtVaSetValues(w, XmNtabPixmap, spherePixmap, XmNtabInactivePixmap, spherePixmap, NULL); } sampleForm = XtVaCreateManagedWidget("sampleForm", xmFormWidgetClass, _folder, NULL); str = XmStringCreateLtoR("\nSample Folder\nPage Area\n", XmSTRING_DEFAULT_CHARSET); XtVaCreateManagedWidget("label", xmLabelWidgetClass, sampleForm, XmNlabelString, str, XmNleftAttachment, XmATTACH_FORM, XmNrightAttachment, XmATTACH_FORM, XmNtopAttachment, XmATTACH_FORM, XmNbottomAttachment, XmATTACH_FORM, NULL); XmStringFree(str); XtAddCallback(XtParent(form), XmNactivateCallback, FolderSwitchCB, NULL); } static void FolderSwitchCB(w, clientData, callData) Widget w; XtPointer clientData, callData; { XmLFolderCallbackStruct *cbs; cbs = (XmLFolderCallbackStruct *)callData; if (cbs->pos == 0) XtVaSetValues(_folder, XmNcornerStyle, XmCORNER_ARC, XmNcornerDimension, 2, XmNtabPlacement, XmFOLDER_TOP, XmNtabsPerRow, 0, NULL); else if (cbs->pos == 1) XtVaSetValues(_folder, XmNcornerStyle, XmCORNER_NONE, XmNtabPlacement, XmFOLDER_BOTTOM, XmNtabsPerRow, 4, NULL); else XtVaSetValues(_folder, XmNcornerStyle, XmCORNER_ARC, XmNcornerDimension, 3, XmNtabPlacement, XmFOLDER_RIGHT, XmNtabsPerRow, 2, NULL); } /* Grid Tab Form */ static void GridSwitchCB(); static void GridSample1(); static void GridSample2(); static void GridSample3(); Widget _grid; void AddGridTabForm(folder) Widget folder; { Widget form; XmString str; static char *desc = "The Grid widget provides an editable grid of \ cells containing text or images in rows and columns.\ \n\n\ The Grid One sample above is a multiple row selection Grid which \ allows column resizing by dragging column headings larger or smaller. \ It contains one heading row and has columns fixed on the left and right. \ The arrows in the Price column are an example of pixmap (image) cell \ types.\ \n\n\ The Grid Two sample demonstrates cell spanning (the 1995 Income \ Summary heading spans 2 columns) and control of cell borders, \ colors and alignment. This Grid is set to not allow selection.\ \n\n\ The Grid Three sample allows editing and is set to allow \ selection of mulitple rows, columns and/or cells. Note that an \ edit may be accepted by pressing Return or by moving to a new \ location and may be rejected with the Escape key. You may \ edit an existing cell''s contents using the F2 or Insert key. \ This Grid also supports interactive row and column resizing. \ Drag and drop is permitted by selecting an area to be dragged \ and performing a drag-and-drop operation (using mouse button 2) \ to copy the selected area to another location.\ \n\n\ The Grid includes a number of advanced features such as:\ \n\ - string (editable or non-editable XmString format) or pixmap cells\n\ - keyboard traversal using arrow keys, page keys, etc.\n\ - add, delete, reorder, move and hiding of rows/columns\n\ - heading, content and footer rows/columns\n\ - top, bottom, left and/or right fixed rows/columns\n\ - rows/column intelligently size to cell fonts/images\n\ - user-adjustable row/column sizes\n\ - cells may span rows/columns\n\ - full control of cell borders and colors\n\ - 9 cell alignment options (top-left, center, etc)\n\ - uses reference-counted cell attributes to save memory\n\ - SetValues on ranges of cells/rows/columns\n\ - callbacks for select, activate, draw, edit, focus, etc.\n\ - cut, paste, drag and drop of cell contents\n\ - ASCII file import and export\ \n\n\ The Grid widget is ideal for replacing single-column Motif \ scrolled lists with multi-column lists. Its also perfect for creating \ high-performance tables. Tables may be created where the data \ displayed is not kept in the Grid itself but retrieved from a \ database when it needs to be displayed. This direct database \ access can save memory and time loading/storing the table. \ Click-sorting may be added to the table to allow a user to \ sort rows by clicking on a column heading.\ \n\n\ Cell attributes in the Grid are reference counted. If a number \ of cells in the Grid have similar attributes (color, fonts, etc) \ they may all contain a pointer to the same attributes structure \ instead of creating an attributes structure for each individual \ cell. This reference counting is transparent to a programmer \ creating a Grid.\ \n\n\ Cells may have borders set on the top, bottom, left and right and \ have a number of color/alignment options. Keyboard traversal is \ provided using the standard Motif key mappings of Page Up, \ Page Down, Home, etc. Selection modes are provided to allow \ selection of a single row (browse mode or single mode), multiple \ rows and arbitrary regions of rows, columns and cells. \ Functions are provided to easily import data to and from text \ files.\ \n\n\ The 3.0 release has added resources allowing you to specify cell \ defaults on a per-column basis (e.g. all cells in column 2 will be \ editable). Also, the Grid''s layout has improved for sizing policies \ where scrollbars appear as needed. The Grid now will use all the \ space it can for data instead of not using the space where the \ scrollbars would appear. \ \n\n\ A number of resources have been added in the 3.0 release to support \ better integration with interface builders. You can now add and \ delete rows and also set column widths and simple headings through \ resources.\ \n\n\ Internally the Grid is a Manager widget which contains two \ ScrollBar children and one Text widget child."; form = AddWidgetSample(folder, "Grid", desc); _grid = XtVaCreateManagedWidget("grid", xmlGridWidgetClass, form, XmNleftAttachment, XmATTACH_FORM, XmNrightAttachment, XmATTACH_FORM, XmNtopAttachment, XmATTACH_FORM, XmNbottomAttachment, XmATTACH_FORM, NULL); GridSample1(); XtAddCallback(XtParent(form), XmNactivateCallback, GridSwitchCB, NULL); } static void GridSwitchCB(w, clientData, callData) Widget w; XtPointer clientData, callData; { XmLFolderCallbackStruct *cbs; Pixel bg; cbs = (XmLFolderCallbackStruct *)callData; /* reset defaults to grid */ XtVaSetValues(_grid, XmNallowDragSelected, False, XmNallowDrop, False, XmNallowColumnResize, False, XmNallowRowResize, False, XmNhighlightRowMode, False, XmNheadingRows, 0, XmNrows, 0, XmNfooterRows, 0, XmNheadingColumns, 0, XmNcolumns, 0, XmNfooterColumns, 0, XmNshadowThickness, 2, XmNtopFixedCount, 0, XmNbottomFixedCount, 0, XmNleftFixedCount, 0, XmNrightFixedCount, 0, NULL); XtVaGetValues(_grid, XmNbackground, &bg, NULL); XtVaSetValues(_grid, XmNcellDefaults, True, XmNcellBackground, bg, XmNcellAlignment, XmALIGNMENT_CENTER, XmNcellLeftBorderType, XmBORDER_LINE, XmNcellRightBorderType, XmBORDER_LINE, XmNcellTopBorderType, XmBORDER_LINE, XmNcellBottomBorderType, XmBORDER_LINE, NULL); if (cbs->pos == 0) GridSample1(); else if (cbs->pos == 1) GridSample2(); else GridSample3(); } static Pixmap upPixmap = XmUNSPECIFIED_PIXMAP; static Pixmap upPixmask; static Pixmap downPixmap = XmUNSPECIFIED_PIXMAP; static Pixmap downPixmask; #define up_width 12 #define up_height 16 static unsigned char up_bits[] = { 0x00, 0x00, 0x60, 0x00, 0xf0, 0x00, 0xf8, 0x01, 0xfc, 0x03, 0xfe, 0x07, 0xfe, 0x07, 0xf6, 0x06, 0xf2, 0x04, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0x00, 0x00}; #define down_width 12 #define down_height 16 static unsigned char down_bits[] = { 0x00, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf2, 0x04, 0xf6, 0x06, 0xfe, 0x07, 0xfe, 0x07, 0xfc, 0x03, 0xf8, 0x01, 0xf0, 0x00, 0x60, 0x00, 0x00, 0x00}; static void GridSample1() { static char *data = "Name|Price||Change|Close Date|Location|Yield\n\ TZZ 3.0 Tana Zin|102.23||-1.2|1/1/94|Tomano, RE|5.6%\n\ BLC 4.5 Board L|103.23||+2.5|2/15/94|Rino, LO|6.8%\n\ DGB 5.4 Dig Gen|101.53||+3.7|6/20/94|Carolana, CA|7.5%\n\ KLC 5.3 Kord L|108.98||-2.5|2/15/94|Cannes, CA|8.7%\n\ LLO 3.4 Liw Lol|107.24||+2.2|2/20/94|Tenise, MI|6.7%\n\ MMN 3.1 Mon Mor|105.63||+1.4|2/15/94|Waterton, MN|6.3%\n\ PLP 4.3 Pol Lab|102.12||-2.3|2/20/94|Holard, LM|7.6%\n\ SZN 4.5 Siml Zi|101.11||+1.6|2/15/94|Tempest, CA|5.4%\n\ TTL 5.6 Towa Tin|101.12||+2.7|3/15/94|Conila, OK|6.7%\n\ ULD 5.4 Upl La D|105.12||-2.2|4/15/94|Mandrill, HI|7.8%"; XtVaSetValues(_grid, XmNlayoutFrozen, True, NULL); XtVaSetValues(_grid, XmNallowColumnResize, True, XmNselectionPolicy, XmSELECT_MULTIPLE_ROW, XmNhighlightRowMode, True, XmNheadingRows, 1, XmNcolumns, 7, XmNsimpleWidths, "18c 8c 16p 8c 12c 16c 6c", XmNrightFixedCount, 1, XmNleftFixedCount, 1, NULL); XtVaSetValues(_grid, XmNcellDefaults, True, XtVaTypedArg, XmNcellBackground, XmRString, "white", 6, XmNcellLeftBorderType, XmBORDER_NONE, XmNcellRightBorderType, XmBORDER_NONE, XmNcellTopBorderType, XmBORDER_NONE, XmNcellBottomBorderType, XmBORDER_NONE, NULL); XtVaSetValues(_grid, XmNrowType, XmHEADING, XmNcolumn, 1, XmNcellColumnSpan, 1, NULL); XtVaSetValues(_grid, XmNcellDefaults, True, XmNcellAlignment, XmALIGNMENT_RIGHT, NULL); XtVaSetValues(_grid, XmNcellDefaults, True, XmNcolumn, 0, XmNcellAlignment, XmALIGNMENT_LEFT, NULL); XtVaSetValues(_grid, XmNcellDefaults, True, XmNcolumn, 1, XmNcellRightBorderType, XmBORDER_NONE, NULL); XtVaSetValues(_grid, XmNcellDefaults, True, XmNcolumn, 2, XmNcellType, XmPIXMAP_CELL, XmNcellLeftBorderType, XmBORDER_NONE, NULL); XmLGridAddRows(_grid, XmCONTENT, -1, 10); XmLGridSetStrings(_grid, data); if (upPixmap == XmUNSPECIFIED_PIXMAP) CreatePixmap(_grid, 2, &upPixmap, &upPixmask, (char *)up_bits, up_width, up_height); if (downPixmap == XmUNSPECIFIED_PIXMAP) CreatePixmap(_grid, 3, &downPixmap, &downPixmask, (char *)down_bits, down_width, down_height); XtVaSetValues(_grid, XmNcolumn, 2, XmNcellPixmap, upPixmap, XmNcellPixmapMask, upPixmask, NULL); XtVaSetValues(_grid, XmNcolumn, 2, XmNrowStep, 3, XmNcellPixmap, downPixmap, XmNcellPixmapMask, downPixmask, NULL); XtVaSetValues(_grid, XmNlayoutFrozen, False, NULL); } static void GridSample2() { static char *data = "|1995 Income Summary\n\ |Shampoo|Conditioner|Soap|Total\n\ Revenues:\n\ Sales|$ 1,600,000|$ 1,000,000|$ 800,000|$ 3,400,000\n\ Less Discounts|(16,000)|(10,000)|(8,000)|(34,000)\n\ Less Return Allowance|(8,000)|(5,000)|(4,000)|(17,000)\n\ Net Revenue|1,576,000|985,000|792,000|3,349,000\n\ \n\ Less Expenses:\n\ Cost of Goods Sold|(640,000)|(330,000)|(264,000)|(1,234,000)\n\ Salary Expense|(380,000)|(280,000)|(180,000)|(840,000)\n\ Marketing Expense|(157,600)|(98,500)|(79,200)|(335,300)\n\ Rent Expense|(36,000)|(36,000)|(36,000)|(108,000)\n\ Misc. Other Expense|(36,408)|(22,335)|(16,776)|(75,519)\n\ Total Expenses|(1,250,008)|(766,835)|(575,976)|(2,592,819)\n\ \n\ Income Tax Expense|(130,397)|(87,266)|(86,410)|(304,072)\n\ Net Income|195,595|130,899|129,614|456,109"; XtVaSetValues(_grid, XmNlayoutFrozen, True, NULL); XtVaSetValues(_grid, XmNheadingColumns, 1, XmNcolumns, 3, XmNfooterColumns, 1, XmNsimpleWidths, "22c 12c 12c 12c 12c", XmNselectionPolicy, XmSELECT_NONE, NULL); /* add 'Income Summary' heading row */ XtVaSetValues(_grid, XmNcellDefaults, True, XmNcellLeftBorderType, XmBORDER_NONE, XmNcellRightBorderType, XmBORDER_NONE, XmNcellTopBorderType, XmBORDER_NONE, XtVaTypedArg, XmNcellBottomBorderColor, XmRString, "black", 6, XmNcellAlignment, XmALIGNMENT_CENTER, XtVaTypedArg, XmNcellForeground, XmRString, "#000080", 8, NULL); XmLGridAddRows(_grid, XmHEADING, -1, 1); XtVaSetValues(_grid, XmNrowType, XmHEADING, XmNrow, 0, XmNcolumn, 0, XmNcellColumnSpan, 2, NULL); /* add 'Shampoo Conditioner Soap' heading row */ XtVaSetValues(_grid, XmNcellDefaults, True, XtVaTypedArg, XmNcellBackground, XmRString, "white", 6, XtVaTypedArg, XmNcellForeground, XmRString, "black", 6, XmNcellBottomBorderType, XmBORDER_NONE, NULL); XmLGridAddRows(_grid, XmHEADING, -1, 1); /* bold heading rows */ XtVaSetValues(_grid, XmNrowType, XmHEADING, XmNcolumnType, XmALL_TYPES, XtVaTypedArg, XmNcellFontList, XmRString, BOLDFONT, strlen(BOLDFONT) + 1, NULL); /* add content and footer rows */ XtVaSetValues(_grid, XmNcellDefaults, True, XmNcellAlignment, XmALIGNMENT_RIGHT, NULL); XmLGridAddRows(_grid, XmCONTENT, -1, 15); XmLGridAddRows(_grid, XmFOOTER, -1, 1); /* left justify left-most (heading) column */ XtVaSetValues(_grid, XmNcolumn, 0, XmNcolumnType, XmHEADING, XmNrowType, XmALL_TYPES, XmNcellAlignment, XmALIGNMENT_LEFT, NULL); /* bold 'Revenues' cell */ XtVaSetValues(_grid, XmNcolumnType, XmHEADING, XmNcolumn, 0, XmNrow, 0, XtVaTypedArg, XmNcellFontList, XmRString, BOLDFONT, strlen(BOLDFONT) + 1, NULL); /* bold 'Less Expenses' cell */ XtVaSetValues(_grid, XmNcolumnType, XmHEADING, XmNcolumn, 0, XmNrow, 6, XtVaTypedArg, XmNcellFontList, XmRString, BOLDFONT, strlen(BOLDFONT) + 1, NULL); /* grey middle and footer content column */ XtVaSetValues(_grid, XmNrowType, XmALL_TYPES, XmNcolumnType, XmALL_TYPES, XmNcolumnRangeStart, 2, XmNcolumnRangeEnd, 4, XmNcolumnStep, 2, XtVaTypedArg, XmNcellBackground, XmRString, "#E8E8E8", 8, NULL); /* set 'Income Summary' heading row yellow */ XtVaSetValues(_grid, XmNcolumnType, XmALL_TYPES, XmNrowType, XmHEADING, XmNrow, 0, XtVaTypedArg, XmNcellBackground, XmRString, "#FFFF00", 8, NULL); /* blue and bold 'Net Revenue' and 'Total Expenses' rows */ XtVaSetValues(_grid, XmNrowRangeStart, 4, XmNrowRangeEnd, 12, XmNrowStep, 8, XmNcolumnType, XmALL_TYPES, XtVaTypedArg, XmNcellForeground, XmRString, "white", 6, XtVaTypedArg, XmNcellBackground, XmRString, "#000080", 8, XtVaTypedArg, XmNcellFontList, XmRString, BOLDFONT, strlen(BOLDFONT) + 1, NULL); /* blue and bold 'Net Income' footer row */ XtVaSetValues(_grid, XmNrow, 0, XmNrowType, XmFOOTER, XmNcolumnType, XmALL_TYPES, XtVaTypedArg, XmNcellForeground, XmRString, "white", 6, XtVaTypedArg, XmNcellBackground, XmRString, "#000080", 8, XtVaTypedArg, XmNcellFontList, XmRString, BOLDFONT, strlen(BOLDFONT) + 1, NULL); XmLGridSetStrings(_grid, data); XtVaSetValues(_grid, XmNlayoutFrozen, False, NULL); } static void GridSample3() { char buf[4]; int i; XtVaSetValues(_grid, XmNlayoutFrozen, True, NULL); XtVaSetValues(_grid, XmNallowDragSelected, True, XmNallowDrop, True, XmNhsbDisplayPolicy, XmSTATIC, XmNvsbDisplayPolicy, XmSTATIC, XmNselectionPolicy, XmSELECT_CELL, XmNallowColumnResize, True, XmNallowRowResize, True, XmNshadowThickness, 1, NULL); XtVaSetValues(_grid, XmNcellDefaults, True, XmNcellEditable, True, XmNcellAlignment, XmALIGNMENT_RIGHT, XtVaTypedArg, XmNcellBackground, XmRString, "white", 6, XmNcellLeftBorderType, XmBORDER_NONE, XmNcellTopBorderType, XmBORDER_NONE, NULL); XtVaSetValues(_grid, XmNheadingRows, 1, XmNheadingColumns, 1, XmNcolumns, 26, XmNrows, 100, NULL); XtVaSetValues(_grid, XmNlayoutFrozen, False, NULL); for (i = 0; i < 26; i++) { sprintf(buf, "%c", 'A' + i); XmLGridSetStringsPos(_grid, XmHEADING, 0, XmCONTENT, i, buf); } for (i = 0; i < 100; i++) { sprintf(buf, "%d", i + 1); XmLGridSetStringsPos(_grid, XmCONTENT, i, XmHEADING, 0, buf); } XtVaSetValues(_grid, XmNrowType, XmALL_TYPES, XmNcolumnType, XmHEADING, XmNcolumn, 0, XmNcellAlignment, XmALIGNMENT_CENTER, XtVaTypedArg, XmNcellBackground, XmRString, "#C0C0C0", 8, XtVaTypedArg, XmNcellFontList, XmRString, BOLDFONT, strlen(BOLDFONT) + 1, XmNcellLeftBorderType, XmBORDER_LINE, XmNcellTopBorderType, XmBORDER_LINE, NULL); XtVaSetValues(_grid, XmNrowType, XmHEADING, XmNrow, 0, XmNcellAlignment, XmALIGNMENT_CENTER, XtVaTypedArg, XmNcellBackground, XmRString, "#C0C0C0", 8, XtVaTypedArg, XmNcellFontList, XmRString, BOLDFONT, strlen(BOLDFONT) + 1, XmNcellLeftBorderType, XmBORDER_LINE, XmNcellTopBorderType, XmBORDER_LINE, NULL); } /* Progress Tab Form */ static void ProgSwitchCB(); static void ProgSweepCB(); Widget _progress; void AddProgTabForm(folder) Widget folder; { Widget form, button; XmString str; static char *desc = "The Progress widget may be used to chart the completion of a task.\ \n\n\ The Progress One sample displays a standard bar-style Progress widget. \ You may press the Quick Sweep or the Slow Sweep button to chart progress \ of a simulated task.\ \n\n\ The Progress Two sample displays a box-style Progress widget with 20 boxes.\ \n\n\ The Progress Three sample contains a bar-style Progress widget which \ displays elapsed time and estimated time to completion. \ Press the Slow Sweep button to display this behavior. These \ times are calculated automatically by the Progress widget. \ \n\n\ Resources exist to set colors, fonts, shadows, the style of the \ meter bar and the values used to determine level of completeness. \ \n\n\ The Progress widget is a subclasss of the Primitive widget."; form = AddWidgetSample(folder, "Progress", desc); _progress = XtVaCreateManagedWidget("progress", xmlProgressWidgetClass, form, XmNleftAttachment, XmATTACH_FORM, XmNrightAttachment, XmATTACH_FORM, XmNtopAttachment, XmATTACH_POSITION, XmNtopPosition, 30, XmNheight, 24, XmNvalue, 50, XtVaTypedArg, XmNforeground, XmRString, "#0000C0", 8, XtVaTypedArg, XmNbackground, XmRString, "white", 6, NULL); button = XtVaCreateManagedWidget("Quick Sweep", xmPushButtonWidgetClass, form, XmNbottomAttachment, XmATTACH_FORM, XmNrightAttachment, XmATTACH_FORM, XmNmarginWidth, 15, NULL); XtAddCallback(button, XmNactivateCallback, ProgSweepCB, (XtPointer)1); button = XtVaCreateManagedWidget("Slow Sweep", xmPushButtonWidgetClass, form, XmNrightAttachment, XmATTACH_WIDGET, XmNrightWidget, button, XmNbottomAttachment, XmATTACH_FORM, XmNmarginWidth, 15, NULL); XtAddCallback(button, XmNactivateCallback, ProgSweepCB, (XtPointer)0); XtAddCallback(XtParent(form), XmNactivateCallback, ProgSwitchCB, NULL); } static void ProgSwitchCB(w, clientData, callData) Widget w; XtPointer clientData, callData; { XmLFolderCallbackStruct *cbs; cbs = (XmLFolderCallbackStruct *)callData; if (cbs->pos == 0) XtVaSetValues(_progress, XmNvalue, 50, XmNshadowThickness, 2, XmNmeterStyle, XmMETER_BAR, XtVaTypedArg, XmNforeground, XmRString, "#0000C0", 8, XmNshowTime, False, NULL); else if (cbs->pos == 1) XtVaSetValues(_progress, XmNvalue, 50, XmNshadowThickness, 1, XmNmeterStyle, XmMETER_BOXES, XmNnumBoxes, 20, XtVaTypedArg, XmNforeground, XmRString, "#0000C0", 8, XmNshowTime, False, NULL); else XtVaSetValues(_progress, XmNvalue, 50, XmNshadowThickness, 2, XmNmeterStyle, XmMETER_BAR, XtVaTypedArg, XmNforeground, XmRString, "#E00000", 8, XmNshowTime, True, NULL); } static void ProgSweepCB(w, clientData, callData) Widget w; XtPointer clientData; XtPointer callData; { int i, quickSweep; quickSweep = (int)clientData; if (quickSweep) for (i = 0; i <= 100; i += 4) XtVaSetValues(_progress, XmNvalue, i, NULL); else { for (i = 0; i <= 100; i += 23) { XtVaSetValues(_progress, XmNvalue, i, NULL); sleep(1); } XtVaSetValues(_progress, XmNvalue, 100, NULL); } } /* Tree Tab Form */ static void TreeSwitchCB(); static void TreeSample(); Widget _tree; void AddTreeTabForm(folder) Widget folder; { Widget form, w; XmString str; static char *desc = "The Tree widget may be used to display hierarchical data and \ parent-child relationships.\ \n\n\ The Tree One sample contains a simple Tree in browse select mode. \ Note that horizontal scrolling is on a per-pixel basis while vertical \ scrolling is on a per-row basis and the horizontal and vertical \ scrollbars only appear as needed. The plus and minus indicators \ may be used to expand and collapse rows. Activating a row \ with Return or by double clicking on it will toggle the expanded \ state of the row.\ \n\n\ The Tree Two sample contains a Tree in multiple row select mode with \ application defined pixmaps.\ \n\n\ The Tree Three sample displays a Tree in browse select mode containing \ multiple columns. The columns support interactive resizing by \ dragging a column heading larger or smaller.\ \n\n\ The Tree widget is a subclass of the Grid, meaning it includes all the \ functionality of the Grid widget. This includes selection policies \ of single row, multiple row, etc. as well as full control over colors, \ fonts, alignment, borders, etc. on a per-cell basis. The Tree \ also supports all the other features of the Grid, including heading, \ content and footer rows and columns, various cell types etc.\ \n\n\ An application may add rows to the Tree and let the Tree handle \ the expansion and collapse of rows, or for large trees, \ an application may handle the expansion and collapse of rows \ by adding (creating) and deleting rows dynamically as needed.\ \n\n\ Resources exist to set the indent level, various colors of the \ Tree, etc. As stated earlier, the Tree also contains all the \ resources available in the Grid.\ \n\n\ This widget is new in the 3.0 release."; form = AddWidgetSample(folder, "Tree", desc); _tree = XtVaCreateManagedWidget("tree", xmlTreeWidgetClass, form, XmNleftAttachment, XmATTACH_FORM, XmNrightAttachment, XmATTACH_FORM, XmNtopAttachment, XmATTACH_FORM, XmNbottomAttachment, XmATTACH_FORM, NULL); TreeSample(0); XtAddCallback(XtParent(form), XmNactivateCallback, TreeSwitchCB, NULL); } static void TreeSwitchCB(w, clientData, callData) Widget w; XtPointer clientData, callData; { XmLFolderCallbackStruct *cbs; cbs = (XmLFolderCallbackStruct *)callData; TreeSample(cbs->pos); } #define dot_width 16 #define dot_height 16 static unsigned char dot_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0xe0, 0x0f, 0xb0, 0x1f, 0x18, 0x3f, 0xb8, 0x3f, 0xf8, 0x3f, 0xf8, 0x3f, 0xf8, 0x3f, 0xf0, 0x1f, 0xe0, 0x0f, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x00}; #define win_width 16 #define win_height 16 static unsigned char win_bits[] = { 0x00, 0x00, 0x00, 0x00, 0xf8, 0x3f, 0x08, 0x40, 0xe8, 0x6f, 0xe8, 0x61, 0xe8, 0x61, 0xe8, 0x61, 0x28, 0x60, 0x28, 0x60, 0x28, 0x60, 0x08, 0x60, 0x08, 0x60, 0xe8, 0x7f, 0xf0, 0x7f, 0x00, 0x00}; static Pixmap dotPixmap = XmUNSPECIFIED_PIXMAP; static Pixmap dotPixmask; static Pixmap winPixmap = XmUNSPECIFIED_PIXMAP; static Pixmap winPixmask; static void TreeSample(num) int num; { XmLTreeRowDefinition *rows; int i, n, size, level; Pixel bg; char buf[80]; static struct { Boolean expands; int level; } defs[10] = { True, 0, True, 1, True, 2, False, 3, False, 2, False, 2, True, 1, False, 2, False, 2, True, 2, }; if (dotPixmap == XmUNSPECIFIED_PIXMAP) CreatePixmap(_tree, 4, &dotPixmap, &dotPixmask, (char *)dot_bits, dot_width, dot_height); if (winPixmap == XmUNSPECIFIED_PIXMAP) CreatePixmap(_tree, 1, &winPixmap, &winPixmask, (char *)win_bits, win_width, win_height); XtVaSetValues(_tree, XmNlayoutFrozen, True, NULL); XmLGridDeleteAllRows(_tree, XmCONTENT); XtVaSetValues(_tree, XmNallowColumnResize, False, XmNheadingRows, 0, XmNcolumns, 1, XmNshadowThickness, 1, XmNselectionPolicy, XmSELECT_BROWSE_ROW, XmNhighlightRowMode, False, XmNglobalPixmapWidth, 0, XmNglobalPixmapHeight, 0, NULL); XtVaSetValues(_tree, XmNcolumn, 0, XmNcolumnSizePolicy, XmVARIABLE, NULL); XtVaGetValues(_tree, XmNbackground, &bg, NULL); XtVaSetValues(_tree, XmNcellDefaults, True, XmNcellBackground, bg, XmNcellLeftBorderType, XmBORDER_LINE, XmNcellRightBorderType, XmBORDER_LINE, XmNcellTopBorderType, XmBORDER_LINE, XmNcellBottomBorderType, XmBORDER_LINE, XmNcellAlignment, XmALIGNMENT_CENTER, NULL); n = 100; if (num == 1) XtVaSetValues(_tree, XmNselectionPolicy, XmSELECT_MULTIPLE_ROW, XmNglobalPixmapWidth, 16, XmNglobalPixmapHeight, 16, NULL); else if (num == 2) XtVaSetValues(_tree, XmNhighlightRowMode, True, XmNheadingRows, 1, XmNcolumns, 5, XmNsimpleHeadings, "Object|Position|Size|Method|Note", XmNsimpleWidths, "1c 10c 10c 15c 15c", XmNallowColumnResize, True, NULL); XtVaSetValues(_tree, XmNcellDefaults, True, XtVaTypedArg, XmNcellBackground, XmRString, "white", 6, XmNcellLeftBorderType, XmBORDER_NONE, XmNcellRightBorderType, XmBORDER_NONE, XmNcellTopBorderType, XmBORDER_NONE, XmNcellBottomBorderType, XmBORDER_NONE, XmNcellAlignment, XmALIGNMENT_RIGHT, NULL); if (num == 2) XtVaSetValues(_tree, XmNcellDefaults, True, XmNcolumnRangeStart, 3, XmNcolumnRangeEnd, 4, XmNcellAlignment, XmALIGNMENT_CENTER, NULL); size = sizeof(XmLTreeRowDefinition); rows = (XmLTreeRowDefinition *)malloc(size * n); level = 0; for (i = 0; i < n; i++) { rows[i].level = defs[i % 10].level; rows[i].expands = defs[i % 10].expands; rows[i].isExpanded = True; if (num < 2) { if (i % 30 >= 10) rows[i].level += 3; if (i % 30 >= 20) rows[i].level += 3; } if (num != 1) { rows[i].pixmap = XmUNSPECIFIED_PIXMAP; rows[i].pixmask = XmUNSPECIFIED_PIXMAP; } else { if (rows[i].expands == True) { rows[i].pixmap = dotPixmap; rows[i].pixmask = dotPixmask; } else { rows[i].pixmap = winPixmap; rows[i].pixmask = winPixmask; } } if (num == 0) sprintf(buf, "Row %d Level %d\n", i, rows[i].level); else if (num == 2) { if (rows[i].expands) sprintf(buf, "Composite"); else if (i % 5) sprintf(buf, "Curve"); else sprintf(buf, "Surface"); } else { if (rows[i].expands == True) sprintf(buf, "Sector Number %d-%d%d", rows[i].level, i % 2, i + 413); else sprintf(buf, "Item Number %d%d%d", i % 12, i % 3, i % 2); } rows[i].string = XmStringCreateSimple(buf); } XmLTreeAddRows(_tree, rows, n, -1); for (i = 0; i < n; i++) { XmStringFree(rows[i].string); if (num == 2) { sprintf(buf, "%d %d|%d points|Open|In Progress", i % 20, i % 15, i % 4); XmLGridSetStringsPos(_tree, XmCONTENT, i, XmCONTENT, 1, buf); } } free((char *)rows); XtVaSetValues(_tree, XmNlayoutFrozen, False, NULL); }