diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2010-02-28 23:12:40 +0100 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2010-02-28 23:12:40 +0100 |
commit | cf56d5ba3eef4d488319666ce62e8026b6419ac4 (patch) | |
tree | 0f27ea50244af27e8f3007e703eb4b6ad54d3861 /lib/oldwrappers/iup.nim | |
parent | b559285b78bfa76533d25e77f3f61cab2427bb03 (diff) | |
download | Nim-cf56d5ba3eef4d488319666ce62e8026b6419ac4.tar.gz |
added old wrappers
Diffstat (limited to 'lib/oldwrappers/iup.nim')
-rw-r--r-- | lib/oldwrappers/iup.nim | 945 |
1 files changed, 945 insertions, 0 deletions
diff --git a/lib/oldwrappers/iup.nim b/lib/oldwrappers/iup.nim new file mode 100644 index 000000000..c37d31047 --- /dev/null +++ b/lib/oldwrappers/iup.nim @@ -0,0 +1,945 @@ +# +# Binding for the IUP GUI toolkit +# (c) 2010 Andreas Rumpf +# C header files translated by hand +# Licence of IUP follows: + + +# **************************************************************************** +# Copyright (C) 1994-2009 Tecgraf, PUC-Rio. +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# **************************************************************************** + +{.deadCodeElim: on.} + +when defined(windows): + const dllname = "iup(30|27|26|25|24).dll" +elif defined(macosx): + const dllname = "libiup(3.0|2.7|2.6|2.5|2.4).dylib" +else: + const dllname = "libiup(3.0|2.7|2.6|2.5|2.4).so.1" + +const + IUP_NAME* = "IUP - Portable User Interface" + IUP_COPYRIGHT* = "Copyright (C) 1994-2009 Tecgraf, PUC-Rio." + IUP_DESCRIPTION* = "Portable toolkit for building graphical user interfaces." + constIUP_VERSION* = "3.0" + constIUP_VERSION_NUMBER* = 300000 + constIUP_VERSION_DATE* = "2009/07/18" + +type + Ihandle {.pure.} = object + PIhandle* = ptr Ihandle + + Icallback* = proc (arg: PIhandle): cint {.cdecl.} + +# pre-definided dialogs +proc FileDlg*: PIhandle {.importc: "IupFileDlg", dynlib: dllname, cdecl.} +proc MessageDlg*: PIhandle {.importc: "IupMessageDlg", dynlib: dllname, cdecl.} +proc ColorDlg*: PIhandle {.importc: "IupColorDlg", dynlib: dllname, cdecl.} +proc FontDlg*: PIhandle {.importc: "IupFontDlg", dynlib: dllname, cdecl.} + +proc GetFile*(arq: cstring): cint {. + importc: "IupGetFile", dynlib: dllname, cdecl.} +proc Message*(title, msg: cstring) {. + importc: "IupMessage", dynlib: dllname, cdecl.} +proc Messagef*(title, format: cstring) {. + importc: "IupMessagef", dynlib: dllname, cdecl, varargs.} +proc Alarm*(title, msg, b1, b2, b3: cstring): cint {. + importc: "IupAlarm", dynlib: dllname, cdecl.} +proc Scanf*(format: cstring): cint {. + importc: "IupScanf", dynlib: dllname, cdecl, varargs.} +proc ListDialog*(theType: cint, title: cstring, size: cint, + list: cstringArray, op, max_col, max_lin: cint, + marks: ptr cint): cint {. + importc: "IupListDialog", dynlib: dllname, cdecl.} +proc GetText*(title, text: cstring): cint {. + importc: "IupGetText", dynlib: dllname, cdecl.} +proc GetColor*(x, y: cint, r, g, b: var byte): cint {. + importc: "IupGetColor", dynlib: dllname, cdecl.} + +type + Iparamcb* = proc (dialog: PIhandle, param_index: cint, + user_data: pointer): cint {.cdecl.} + +proc GetParam*(title: cstring, action: Iparamcb, user_data: pointer, + format: cstring): cint {. + importc: "IupGetParam", cdecl, varargs, dynlib: dllname.} +proc GetParamv*(title: cstring, action: Iparamcb, user_data: pointer, + format: cstring, param_count, param_extra: cint, + param_data: pointer): cint {. + importc: "IupGetParamv", cdecl, dynlib: dllname.} + + +# Functions + +proc Open*(argc: ptr cint, argv: ptr cstringArray): cint {. + importc: "IupOpen", cdecl, dynlib: dllname.} +proc Close*() {.importc: "IupClose", cdecl, dynlib: dllname.} +proc ImageLibOpen*() {.importc: "IupImageLibOpen", cdecl, dynlib: dllname.} + +proc MainLoop*(): cint {.importc: "IupMainLoop", cdecl, dynlib: dllname.} +proc LoopStep*(): cint {.importc: "IupLoopStep", cdecl, dynlib: dllname.} +proc MainLoopLevel*(): cint {.importc: "IupMainLoopLevel", cdecl, dynlib: dllname.} +proc Flush*() {.importc: "IupFlush", cdecl, dynlib: dllname.} +proc ExitLoop*() {.importc: "IupExitLoop", cdecl, dynlib: dllname.} + +proc Update*(ih: PIhandle) {.importc: "IupUpdate", cdecl, dynlib: dllname.} +proc UpdateChildren*(ih: PIhandle) {.importc: "IupUpdateChildren", cdecl, dynlib: dllname.} +proc Redraw*(ih: PIhandle, children: cint) {.importc: "IupRedraw", cdecl, dynlib: dllname.} +proc Refresh*(ih: PIhandle) {.importc: "IupRefresh", cdecl, dynlib: dllname.} + +proc MapFont*(iupfont: cstring): cstring {.importc: "IupMapFont", cdecl, dynlib: dllname.} +proc UnMapFont*(driverfont: cstring): cstring {.importc: "IupUnMapFont", cdecl, dynlib: dllname.} +proc Help*(url: cstring): cint {.importc: "IupHelp", cdecl, dynlib: dllname.} +proc Load*(filename: cstring): cstring {.importc: "IupLoad", cdecl, dynlib: dllname.} + +proc IupVersion*(): cstring {.importc: "IupVersion", cdecl, dynlib: dllname.} +proc IupVersionDate*(): cstring {.importc: "IupVersionDate", cdecl, dynlib: dllname.} +proc IupVersionNumber*(): cint {.importc: "IupVersionNumber", cdecl, dynlib: dllname.} +proc SetLanguage*(lng: cstring) {.importc: "IupSetLanguage", cdecl, dynlib: dllname.} +proc GetLanguage*(): cstring {.importc: "IupGetLanguage", cdecl, dynlib: dllname.} + +proc Destroy*(ih: PIhandle) {.importc: "IupDestroy", cdecl, dynlib: dllname.} +proc Detach*(child: PIhandle) {.importc: "IupDetach", cdecl, dynlib: dllname.} +proc Append*(ih, child: PIhandle): PIhandle {. + importc: "IupAppend", cdecl, dynlib: dllname.} +proc Insert*(ih, ref_child, child: PIhandle): PIhandle {. + importc: "IupInsert", cdecl, dynlib: dllname.} +proc GetChild*(ih: PIhandle, pos: cint): PIhandle {. + importc: "IupGetChild", cdecl, dynlib: dllname.} +proc GetChildPos*(ih, child: PIhandle): cint {. + importc: "IupGetChildPos", cdecl, dynlib: dllname.} +proc GetChildCount*(ih: PIhandle): cint {. + importc: "IupGetChildCount", cdecl, dynlib: dllname.} +proc GetNextChild*(ih, child: PIhandle): PIhandle {. + importc: "IupGetNextChild", cdecl, dynlib: dllname.} +proc GetBrother*(ih: PIhandle): PIhandle {. + importc: "IupGetBrother", cdecl, dynlib: dllname.} +proc GetParent*(ih: PIhandle): PIhandle {. + importc: "IupGetParent", cdecl, dynlib: dllname.} +proc GetDialog*(ih: PIhandle): PIhandle {. + importc: "IupGetDialog", cdecl, dynlib: dllname.} +proc GetDialogChild*(ih: PIhandle, name: cstring): PIhandle {. + importc: "IupGetDialogChild", cdecl, dynlib: dllname.} +proc Reparent*(ih, new_parent: PIhandle): cint {. + importc: "IupReparent", cdecl, dynlib: dllname.} + +proc Popup*(ih: PIhandle, x, y: cint): cint {. + importc: "IupPopup", cdecl, dynlib: dllname.} +proc Show*(ih: PIhandle): cint {. + importc: "IupShow", cdecl, dynlib: dllname.} +proc ShowXY*(ih: PIhandle, x, y: cint): cint {. + importc: "IupShowXY", cdecl, dynlib: dllname.} +proc Hide*(ih: PIhandle): cint {. + importc: "IupHide", cdecl, dynlib: dllname.} +proc Map*(ih: PIhandle): cint {. + importc: "IupMap", cdecl, dynlib: dllname.} +proc Unmap*(ih: PIhandle) {. + importc: "IupUnmap", cdecl, dynlib: dllname.} + +proc SetAttribute*(ih: PIhandle, name, value: cstring) {. + importc: "IupSetAttribute", cdecl, dynlib: dllname.} +proc StoreAttribute*(ih: PIhandle, name, value: cstring) {. + importc: "IupStoreAttribute", cdecl, dynlib: dllname.} +proc SetAttributes*(ih: PIhandle, str: cstring): PIhandle {. + importc: "IupSetAttributes", cdecl, dynlib: dllname.} +proc GetAttribute*(ih: PIhandle, name: cstring): cstring {. + importc: "IupGetAttribute", cdecl, dynlib: dllname.} +proc GetAttributes*(ih: PIhandle): cstring {. + importc: "IupGetAttributes", cdecl, dynlib: dllname.} +proc GetInt*(ih: PIhandle, name: cstring): cint {. + importc: "IupGetInt", cdecl, dynlib: dllname.} +proc GetInt2*(ih: PIhandle, name: cstring): cint {. + importc: "IupGetInt2", cdecl, dynlib: dllname.} +proc GetIntInt*(ih: PIhandle, name: cstring, i1, i2: var cint): cint {. + importc: "IupGetIntInt", cdecl, dynlib: dllname.} +proc GetFloat*(ih: PIhandle, name: cstring): cfloat {. + importc: "IupGetFloat", cdecl, dynlib: dllname.} +proc SetfAttribute*(ih: PIhandle, name, format: cstring) {. + importc: "IupSetfAttribute", cdecl, dynlib: dllname, varargs.} +proc GetAllAttributes*(ih: PIhandle, names: cstringArray, n: cint): cint {. + importc: "IupGetAllAttributes", cdecl, dynlib: dllname.} +proc SetAtt*(handle_name: cstring, ih: PIhandle, name: cstring): PIhandle {. + importc: "IupSetAtt", cdecl, dynlib: dllname, varargs.} + +proc SetGlobal*(name, value: cstring) {. + importc: "IupSetGlobal", cdecl, dynlib: dllname.} +proc StoreGlobal*(name, value: cstring) {. + importc: "IupStoreGlobal", cdecl, dynlib: dllname.} +proc GetGlobal*(name: cstring): cstring {. + importc: "IupGetGlobal", cdecl, dynlib: dllname.} + +proc SetFocus*(ih: PIhandle): PIhandle {. + importc: "IupSetFocus", cdecl, dynlib: dllname.} +proc GetFocus*(): PIhandle {. + importc: "IupGetFocus", cdecl, dynlib: dllname.} +proc PreviousField*(ih: PIhandle): PIhandle {. + importc: "IupPreviousField", cdecl, dynlib: dllname.} +proc NextField*(ih: PIhandle): PIhandle {. + importc: "IupNextField", cdecl, dynlib: dllname.} + +proc GetCallback*(ih: PIhandle, name: cstring): Icallback {. + importc: "IupGetCallback", cdecl, dynlib: dllname.} +proc SetCallback*(ih: PIhandle, name: cstring, func: Icallback): Icallback {. + importc: "IupSetCallback", cdecl, dynlib: dllname.} +proc SetCallbacks*(ih: PIhandle, name: cstring, func: Icallback): PIhandle {. + importc: "IupSetCallbacks", cdecl, dynlib: dllname, varargs.} + +proc GetFunction*(name: cstring): Icallback {. + importc: "IupGetFunction", cdecl, dynlib: dllname.} +proc SetFunction*(name: cstring, func: Icallback): Icallback {. + importc: "IupSetFunction", cdecl, dynlib: dllname.} +proc GetActionName*(): cstring {. + importc: "IupGetActionName", cdecl, dynlib: dllname.} + +proc GetHandle*(name: cstring): PIhandle {. + importc: "IupGetHandle", cdecl, dynlib: dllname.} +proc SetHandle*(name: cstring, ih: PIhandle): PIhandle {. + importc: "IupSetHandle", cdecl, dynlib: dllname.} +proc GetAllNames*(names: cstringArray, n: cint): cint {. + importc: "IupGetAllNames", cdecl, dynlib: dllname.} +proc GetAllDialogs*(names: cstringArray, n: cint): cint {. + importc: "IupGetAllDialogs", cdecl, dynlib: dllname.} +proc GetName*(ih: PIhandle): cstring {. + importc: "IupGetName", cdecl, dynlib: dllname.} + +proc SetAttributeHandle*(ih: PIhandle, name: cstring, ih_named: PIhandle) {. + importc: "IupSetAttributeHandle", cdecl, dynlib: dllname.} +proc GetAttributeHandle*(ih: PIhandle, name: cstring): PIhandle {. + importc: "IupGetAttributeHandle", cdecl, dynlib: dllname.} + +proc GetClassName*(ih: PIhandle): cstring {. + importc: "IupGetClassName", cdecl, dynlib: dllname.} +proc GetClassType*(ih: PIhandle): cstring {. + importc: "IupGetClassType", cdecl, dynlib: dllname.} +proc GetClassAttributes*(classname: cstring, names: cstringArray, + n: cint): cint {. + importc: "IupGetClassAttributes", cdecl, dynlib: dllname.} +proc SaveClassAttributes*(ih: PIhandle) {. + importc: "IupSaveClassAttributes", cdecl, dynlib: dllname.} +proc SetClassDefaultAttribute*(classname, name, value: cstring) {. + importc: "IupSetClassDefaultAttribute", cdecl, dynlib: dllname.} + +proc Create*(classname: cstring): PIhandle {. + importc: "IupCreate", cdecl, dynlib: dllname.} +proc Createv*(classname: cstring, params: pointer): PIhandle {. + importc: "IupCreatev", cdecl, dynlib: dllname.} +proc Createp*(classname: cstring, first: pointer): PIhandle {. + importc: "IupCreatep", cdecl, dynlib: dllname, varargs.} + +proc Fill*(): PIhandle {.importc: "IupFill", cdecl, dynlib: dllname.} +proc Radio*(child: PIhandle): PIhandle {. + importc: "IupRadio", cdecl, dynlib: dllname.} +proc Vbox*(child: PIhandle): PIhandle {. + importc: "IupVbox", cdecl, dynlib: dllname, varargs.} +proc Vboxv*(children: ptr PIhandle): PIhandle {. + importc: "IupVboxv", cdecl, dynlib: dllname.} +proc Zbox*(child: PIhandle): PIhandle {. + importc: "IupZbox", cdecl, dynlib: dllname, varargs.} +proc Zboxv*(children: ptr PIhandle): PIhandle {. + importc: "IupZboxv", cdecl, dynlib: dllname.} +proc Hbox*(child: PIhandle): PIhandle {. + importc: "IupHbox", cdecl, dynlib: dllname, varargs.} +proc Hboxv*(children: ptr PIhandle): PIhandle {. + importc: "IupHboxv", cdecl, dynlib: dllname.} + +proc Normalizer*(ih_first: PIhandle): PIhandle {. + importc: "IupNormalizer", cdecl, dynlib: dllname, varargs.} +proc Normalizerv*(ih_list: ptr PIhandle): PIhandle {. + importc: "IupNormalizerv", cdecl, dynlib: dllname.} + +proc Cbox*(child: PIhandle): PIhandle {. + importc: "IupCbox", cdecl, dynlib: dllname, varargs.} +proc Cboxv*(children: ptr PIhandle): PIhandle {. + importc: "IupCboxv", cdecl, dynlib: dllname.} +proc Sbox*(child: PIhandle): PIhandle {. + importc: "IupSbox", cdecl, dynlib: dllname.} + +proc Frame*(child: PIhandle): PIhandle {. + importc: "IupFrame", cdecl, dynlib: dllname.} + +proc Image*(width, height: cint, pixmap: pointer): PIhandle {. + importc: "IupImage", cdecl, dynlib: dllname.} +proc ImageRGB*(width, height: cint, pixmap: pointer): PIhandle {. + importc: "IupImageRGB", cdecl, dynlib: dllname.} +proc ImageRGBA*(width, height: cint, pixmap: pointer): PIhandle {. + importc: "IupImageRGBA", cdecl, dynlib: dllname.} + +proc Item*(title, action: cstring): PIhandle {. + importc: "IupItem", cdecl, dynlib: dllname.} +proc Submenu*(title: cstring, child: PIhandle): PIhandle {. + importc: "IupSubmenu", cdecl, dynlib: dllname.} +proc Separator*(): PIhandle {. + importc: "IupSeparator", cdecl, dynlib: dllname.} +proc Menu*(child: PIhandle): PIhandle {. + importc: "IupMenu", cdecl, dynlib: dllname, varargs.} +proc Menuv*(children: ptr PIhandle): PIhandle {. + importc: "IupMenuv", cdecl, dynlib: dllname.} + +proc Button*(title, action: cstring): PIhandle {. + importc: "IupButton", cdecl, dynlib: dllname.} +proc Canvas*(action: cstring): PIhandle {. + importc: "IupCanvas", cdecl, dynlib: dllname.} +proc Dialog*(child: PIhandle): PIhandle {. + importc: "IupDialog", cdecl, dynlib: dllname.} +proc User*(): PIhandle {. + importc: "IupUser", cdecl, dynlib: dllname.} +proc Label*(title: cstring): PIhandle {. + importc: "IupLabel", cdecl, dynlib: dllname.} +proc List*(action: cstring): PIhandle {. + importc: "IupList", cdecl, dynlib: dllname.} +proc Text*(action: cstring): PIhandle {. + importc: "IupText", cdecl, dynlib: dllname.} +proc MultiLine*(action: cstring): PIhandle {. + importc: "IupMultiLine", cdecl, dynlib: dllname.} +proc Toggle*(title, action: cstring): PIhandle {. + importc: "IupToggle", cdecl, dynlib: dllname.} +proc Timer*(): PIhandle {. + importc: "IupTimer", cdecl, dynlib: dllname.} +proc ProgressBar*(): PIhandle {. + importc: "IupProgressBar", cdecl, dynlib: dllname.} +proc Val*(theType: cstring): PIhandle {. + importc: "IupVal", cdecl, dynlib: dllname.} +proc Tabs*(child: PIhandle): PIhandle {. + importc: "IupTabs", cdecl, dynlib: dllname, varargs.} +proc Tabsv*(children: ptr PIhandle): PIhandle {. + importc: "IupTabsv", cdecl, dynlib: dllname.} +proc Tree*(): PIhandle {.importc: "IupTree", cdecl, dynlib: dllname.} + +proc Spin*(): PIhandle {.importc: "IupSpin", cdecl, dynlib: dllname.} +proc Spinbox*(child: PIhandle): PIhandle {. + importc: "IupSpinbox", cdecl, dynlib: dllname.} + +# IupText utilities +proc TextConvertLinColToPos*(ih: PIhandle, lin, col: cint, pos: var cint) {. + importc: "IupTextConvertLinColToPos", cdecl, dynlib: dllname.} +proc TextConvertPosToLinCol*(ih: PIhandle, pos: cint, lin, col: var cint) {. + importc: "IupTextConvertPosToLinCol", cdecl, dynlib: dllname.} + +proc ConvertXYToPos*(ih: PIhandle, x, y: cint): cint {. + importc: "IupConvertXYToPos", cdecl, dynlib: dllname.} + +# IupTree utilities +proc TreeSetUserId*(ih: PIhandle, id: cint, userid: pointer): cint {. + importc: "IupTreeSetUserId", cdecl, dynlib: dllname.} +proc TreeGetUserId*(ih: PIhandle, id: cint): pointer {. + importc: "IupTreeGetUserId", cdecl, dynlib: dllname.} +proc TreeGetId*(ih: PIhandle, userid: pointer): cint {. + importc: "IupTreeGetId", cdecl, dynlib: dllname.} + +proc TreeSetAttribute*(ih: PIhandle, name: cstring, id: cint, value: cstring) {. + importc: "IupTreeSetAttribute", cdecl, dynlib: dllname.} +proc TreeStoreAttribute*(ih: PIhandle, name: cstring, id: cint, value: cstring) {. + importc: "IupTreeStoreAttribute", cdecl, dynlib: dllname.} +proc TreeGetAttribute*(ih: PIhandle, name: cstring, id: cint): cstring {. + importc: "IupTreeGetAttribute", cdecl, dynlib: dllname.} +proc TreeGetInt*(ih: PIhandle, name: cstring, id: cint): cint {. + importc: "IupTreeGetInt", cdecl, dynlib: dllname.} +proc TreeGetFloat*(ih: PIhandle, name: cstring, id: cint): cfloat {. + importc: "IupTreeGetFloat", cdecl, dynlib: dllname.} +proc TreeSetfAttribute*(ih: PIhandle, name: cstring, id: cint, format: cstring) {. + importc: "IupTreeSetfAttribute", cdecl, dynlib: dllname, varargs.} + + +# Common Return Values +const + IUP_ERROR* = cint(1) + IUP_NOERROR* = cint(0) + IUP_OPENED* = cint(-1) + IUP_INVALID* = cint(-1) + + # Callback Return Values + IUP_IGNORE* = cint(-1) + IUP_DEFAULT* = cint(-2) + IUP_CLOSE* = cint(-3) + IUP_CONTINUE* = cint(-4) + + # IupPopup and IupShowXY Parameter Values + IUP_CENTER* = cint(0xFFFF) + IUP_LEFT* = cint(0xFFFE) + IUP_RIGHT* = cint(0xFFFD) + IUP_MOUSEPOS* = cint(0xFFFC) + IUP_CURRENT* = cint(0xFFFB) + IUP_CENTERPARENT* = cint(0xFFFA) + IUP_TOP* = IUP_LEFT + IUP_BOTTOM* = IUP_RIGHT + + # SHOW_CB Callback Values + IUP_SHOW* = cint(0) + IUP_RESTORE* = cint(1) + IUP_MINIMIZE* = cint(2) + IUP_MAXIMIZE* = cint(3) + IUP_HIDE* = cint(4) + + # SCROLL_CB Callback Values + IUP_SBUP* = cint(0) + IUP_SBDN* = cint(1) + IUP_SBPGUP* = cint(2) + IUP_SBPGDN* = cint(3) + IUP_SBPOSV* = cint(4) + IUP_SBDRAGV* = cint(5) + IUP_SBLEFT* = cint(6) + IUP_SBRIGHT* = cint(7) + IUP_SBPGLEFT* = cint(8) + IUP_SBPGRIGHT* = cint(9) + IUP_SBPOSH* = cint(10) + IUP_SBDRAGH* = cint(11) + + # Mouse Button Values and Macros + IUP_BUTTON1* = cint(ord('1')) + IUP_BUTTON2* = cint(ord('2')) + IUP_BUTTON3* = cint(ord('3')) + IUP_BUTTON4* = cint(ord('4')) + IUP_BUTTON5* = cint(ord('5')) + +proc isShift*(s: cstring): bool = return s[0] == 'S' +proc isControl*(s: cstring): bool = return s[1] == 'C' +proc isButton1*(s: cstring): bool = return s[2] == '1' +proc isButton2*(s: cstring): bool = return s[3] == '2' +proc isbutton3*(s: cstring): bool = return s[4] == '3' +proc isDouble*(s: cstring): bool = return s[5] == 'D' +proc isAlt*(s: cstring): bool = return s[6] == 'A' +proc isSys*(s: cstring): bool = return s[7] == 'Y' +proc isButton4*(s: cstring): bool = return s[8] == '4' +proc isButton5*(s: cstring): bool = return s[9] == '5' + +# Pre-Defined Masks +const + IUP_MASK_FLOAT* = "[+/-]?(/d+/.?/d*|/./d+)" + IUP_MASK_UFLOAT* = "(/d+/.?/d*|/./d+)" + IUP_MASK_EFLOAT* = "[+/-]?(/d+/.?/d*|/./d+)([eE][+/-]?/d+)?" + IUP_MASK_INT* = "[+/-]?/d+" + IUP_MASK_UINT* = "/d+" + +# from 32 to 126, all character sets are equal, +# the key code i the same as the character code. +const + K_SP* = cint(ord(' ')) + K_exclam* = cint(ord('!')) + K_quotedbl* = cint(ord('\"')) + K_numbersign* = cint(ord('#')) + K_dollar* = cint(ord('$')) + K_percent* = cint(ord('%')) + K_ampersand* = cint(ord('&')) + K_apostrophe* = cint(ord('\'')) + K_parentleft* = cint(ord('(')) + K_parentright* = cint(ord(')')) + K_asterisk* = cint(ord('*')) + K_plus* = cint(ord('+')) + K_comma* = cint(ord(',')) + K_minus* = cint(ord('-')) + K_period* = cint(ord('.')) + K_slash* = cint(ord('/')) + K_0* = cint(ord('0')) + K_1* = cint(ord('1')) + K_2* = cint(ord('2')) + K_3* = cint(ord('3')) + K_4* = cint(ord('4')) + K_5* = cint(ord('5')) + K_6* = cint(ord('6')) + K_7* = cint(ord('7')) + K_8* = cint(ord('8')) + K_9* = cint(ord('9')) + K_colon* = cint(ord(':')) + K_semicolon* = cint(ord(';')) + K_less* = cint(ord('<')) + K_equal* = cint(ord('=')) + K_greater* = cint(ord('>')) + K_question* = cint(ord('?')) + K_at* = cint(ord('@')) + K_upperA* = cint(ord('A')) + K_upperB* = cint(ord('B')) + K_upperC* = cint(ord('C')) + K_upperD* = cint(ord('D')) + K_upperE* = cint(ord('E')) + K_upperF* = cint(ord('F')) + K_upperG* = cint(ord('G')) + K_upperH* = cint(ord('H')) + K_upperI* = cint(ord('I')) + K_upperJ* = cint(ord('J')) + K_upperK* = cint(ord('K')) + K_upperL* = cint(ord('L')) + K_upperM* = cint(ord('M')) + K_upperN* = cint(ord('N')) + K_upperO* = cint(ord('O')) + K_upperP* = cint(ord('P')) + K_upperQ* = cint(ord('Q')) + K_upperR* = cint(ord('R')) + K_upperS* = cint(ord('S')) + K_upperT* = cint(ord('T')) + K_upperU* = cint(ord('U')) + K_upperV* = cint(ord('V')) + K_upperW* = cint(ord('W')) + K_upperX* = cint(ord('X')) + K_upperY* = cint(ord('Y')) + K_upperZ* = cint(ord('Z')) + K_bracketleft* = cint(ord('[')) + K_backslash* = cint(ord('\\')) + K_bracketright* = cint(ord(']')) + K_circum* = cint(ord('^')) + K_underscore* = cint(ord('_')) + K_grave* = cint(ord('`')) + K_lowera* = cint(ord('a')) + K_lowerb* = cint(ord('b')) + K_lowerc* = cint(ord('c')) + K_lowerd* = cint(ord('d')) + K_lowere* = cint(ord('e')) + K_lowerf* = cint(ord('f')) + K_lowerg* = cint(ord('g')) + K_lowerh* = cint(ord('h')) + K_loweri* = cint(ord('i')) + K_lowerj* = cint(ord('j')) + K_lowerk* = cint(ord('k')) + K_lowerl* = cint(ord('l')) + K_lowerm* = cint(ord('m')) + K_lowern* = cint(ord('n')) + K_lowero* = cint(ord('o')) + K_lowerp* = cint(ord('p')) + K_lowerq* = cint(ord('q')) + K_lowerr* = cint(ord('r')) + K_lowers* = cint(ord('s')) + K_lowert* = cint(ord('t')) + K_loweru* = cint(ord('u')) + K_lowerv* = cint(ord('v')) + K_lowerw* = cint(ord('w')) + K_lowerx* = cint(ord('x')) + K_lowery* = cint(ord('y')) + K_lowerz* = cint(ord('z')) + K_braceleft* = cint(ord('{')) + K_bar* = cint(ord('|')) + K_braceright* = cint(ord('}')) + K_tilde* = cint(ord('~')) + +proc isPrint*(c: cint): bool = return c > 31 and c < 127 + +# also define the escape sequences that have keys associated +const + K_BS* = cint(ord('\b')) + K_TAB* = cint(ord('\t')) + K_LF* = cint(10) + K_CR* = cint(13) + +# IUP Extended Key Codes, range start at 128 +# Modifiers use 256 interval +# These key code definitions are specific to IUP + +proc isXkey*(c: cint): bool = return c > 128 +proc isShiftXkey*(c: cint): bool = return c > 256 and c < 512 +proc isCtrlXkey*(c: cint): bool = return c > 512 and c < 768 +proc isAltXkey*(c: cint): bool = return c > 768 and c < 1024 +proc isSysXkey*(c: cint): bool = return c > 1024 and c < 1280 + +proc IUPxCODE*(c: cint): cint = return c + cint(128) # Normal (must be above 128) +proc IUPsxCODE*(c: cint): cint = + return c + cint(256) + # Shift (must have range to include the standard keys and the normal + # extended keys, so must be above 256 + +proc IUPcxCODE*(c: cint): cint = return c + cint(512) # Ctrl +proc IUPmxCODE*(c: cint): cint = return c + cint(768) # Alt +proc IUPyxCODE*(c: cint): cint = return c + cint(1024) # Sys (Win or Apple) + +const + IUP_NUMMAXCODES* = 1280 ## 5*256=1280 Normal+Shift+Ctrl+Alt+Sys + + K_HOME* = IUPxCODE(1) + K_UP* = IUPxCODE(2) + K_PGUP* = IUPxCODE(3) + K_LEFT* = IUPxCODE(4) + K_MIDDLE* = IUPxCODE(5) + K_RIGHT* = IUPxCODE(6) + K_END* = IUPxCODE(7) + K_DOWN* = IUPxCODE(8) + K_PGDN* = IUPxCODE(9) + K_INS* = IUPxCODE(10) + K_DEL* = IUPxCODE(11) + K_PAUSE* = IUPxCODE(12) + K_ESC* = IUPxCODE(13) + K_ccedilla* = IUPxCODE(14) + K_F1* = IUPxCODE(15) + K_F2* = IUPxCODE(16) + K_F3* = IUPxCODE(17) + K_F4* = IUPxCODE(18) + K_F5* = IUPxCODE(19) + K_F6* = IUPxCODE(20) + K_F7* = IUPxCODE(21) + K_F8* = IUPxCODE(22) + K_F9* = IUPxCODE(23) + K_F10* = IUPxCODE(24) + K_F11* = IUPxCODE(25) + K_F12* = IUPxCODE(26) + K_Print* = IUPxCODE(27) + K_Menu* = IUPxCODE(28) + + K_acute* = IUPxCODE(29) # no Shift/Ctrl/Alt + + K_sHOME* = IUPsxCODE(K_HOME) + K_sUP* = IUPsxCODE(K_UP) + K_sPGUP* = IUPsxCODE(K_PGUP) + K_sLEFT* = IUPsxCODE(K_LEFT) + K_sMIDDLE* = IUPsxCODE(K_MIDDLE) + K_sRIGHT* = IUPsxCODE(K_RIGHT) + K_sEND* = IUPsxCODE(K_END) + K_sDOWN* = IUPsxCODE(K_DOWN) + K_sPGDN* = IUPsxCODE(K_PGDN) + K_sINS* = IUPsxCODE(K_INS) + K_sDEL* = IUPsxCODE(K_DEL) + K_sSP* = IUPsxCODE(K_SP) + K_sTAB* = IUPsxCODE(K_TAB) + K_sCR* = IUPsxCODE(K_CR) + K_sBS* = IUPsxCODE(K_BS) + K_sPAUSE* = IUPsxCODE(K_PAUSE) + K_sESC* = IUPsxCODE(K_ESC) + K_sCcedilla* = IUPsxCODE(K_ccedilla) + K_sF1* = IUPsxCODE(K_F1) + K_sF2* = IUPsxCODE(K_F2) + K_sF3* = IUPsxCODE(K_F3) + K_sF4* = IUPsxCODE(K_F4) + K_sF5* = IUPsxCODE(K_F5) + K_sF6* = IUPsxCODE(K_F6) + K_sF7* = IUPsxCODE(K_F7) + K_sF8* = IUPsxCODE(K_F8) + K_sF9* = IUPsxCODE(K_F9) + K_sF10* = IUPsxCODE(K_F10) + K_sF11* = IUPsxCODE(K_F11) + K_sF12* = IUPsxCODE(K_F12) + K_sPrint* = IUPsxCODE(K_Print) + K_sMenu* = IUPsxCODE(K_Menu) + + K_cHOME* = IUPcxCODE(K_HOME) + K_cUP* = IUPcxCODE(K_UP) + K_cPGUP* = IUPcxCODE(K_PGUP) + K_cLEFT* = IUPcxCODE(K_LEFT) + K_cMIDDLE* = IUPcxCODE(K_MIDDLE) + K_cRIGHT* = IUPcxCODE(K_RIGHT) + K_cEND* = IUPcxCODE(K_END) + K_cDOWN* = IUPcxCODE(K_DOWN) + K_cPGDN* = IUPcxCODE(K_PGDN) + K_cINS* = IUPcxCODE(K_INS) + K_cDEL* = IUPcxCODE(K_DEL) + K_cSP* = IUPcxCODE(K_SP) + K_cTAB* = IUPcxCODE(K_TAB) + K_cCR* = IUPcxCODE(K_CR) + K_cBS* = IUPcxCODE(K_BS) + K_cPAUSE* = IUPcxCODE(K_PAUSE) + K_cESC* = IUPcxCODE(K_ESC) + K_cCcedilla* = IUPcxCODE(K_ccedilla) + K_cF1* = IUPcxCODE(K_F1) + K_cF2* = IUPcxCODE(K_F2) + K_cF3* = IUPcxCODE(K_F3) + K_cF4* = IUPcxCODE(K_F4) + K_cF5* = IUPcxCODE(K_F5) + K_cF6* = IUPcxCODE(K_F6) + K_cF7* = IUPcxCODE(K_F7) + K_cF8* = IUPcxCODE(K_F8) + K_cF9* = IUPcxCODE(K_F9) + K_cF10* = IUPcxCODE(K_F10) + K_cF11* = IUPcxCODE(K_F11) + K_cF12* = IUPcxCODE(K_F12) + K_cPrint* = IUPcxCODE(K_Print) + K_cMenu* = IUPcxCODE(K_Menu) + + K_mHOME* = IUPmxCODE(K_HOME) + K_mUP* = IUPmxCODE(K_UP) + K_mPGUP* = IUPmxCODE(K_PGUP) + K_mLEFT* = IUPmxCODE(K_LEFT) + K_mMIDDLE* = IUPmxCODE(K_MIDDLE) + K_mRIGHT* = IUPmxCODE(K_RIGHT) + K_mEND* = IUPmxCODE(K_END) + K_mDOWN* = IUPmxCODE(K_DOWN) + K_mPGDN* = IUPmxCODE(K_PGDN) + K_mINS* = IUPmxCODE(K_INS) + K_mDEL* = IUPmxCODE(K_DEL) + K_mSP* = IUPmxCODE(K_SP) + K_mTAB* = IUPmxCODE(K_TAB) + K_mCR* = IUPmxCODE(K_CR) + K_mBS* = IUPmxCODE(K_BS) + K_mPAUSE* = IUPmxCODE(K_PAUSE) + K_mESC* = IUPmxCODE(K_ESC) + K_mCcedilla* = IUPmxCODE(K_ccedilla) + K_mF1* = IUPmxCODE(K_F1) + K_mF2* = IUPmxCODE(K_F2) + K_mF3* = IUPmxCODE(K_F3) + K_mF4* = IUPmxCODE(K_F4) + K_mF5* = IUPmxCODE(K_F5) + K_mF6* = IUPmxCODE(K_F6) + K_mF7* = IUPmxCODE(K_F7) + K_mF8* = IUPmxCODE(K_F8) + K_mF9* = IUPmxCODE(K_F9) + K_mF10* = IUPmxCODE(K_F10) + K_mF11* = IUPmxCODE(K_F11) + K_mF12* = IUPmxCODE(K_F12) + K_mPrint* = IUPmxCODE(K_Print) + K_mMenu* = IUPmxCODE(K_Menu) + + K_yHOME* = IUPyxCODE(K_HOME) + K_yUP* = IUPyxCODE(K_UP) + K_yPGUP* = IUPyxCODE(K_PGUP) + K_yLEFT* = IUPyxCODE(K_LEFT) + K_yMIDDLE* = IUPyxCODE(K_MIDDLE) + K_yRIGHT* = IUPyxCODE(K_RIGHT) + K_yEND* = IUPyxCODE(K_END) + K_yDOWN* = IUPyxCODE(K_DOWN) + K_yPGDN* = IUPyxCODE(K_PGDN) + K_yINS* = IUPyxCODE(K_INS) + K_yDEL* = IUPyxCODE(K_DEL) + K_ySP* = IUPyxCODE(K_SP) + K_yTAB* = IUPyxCODE(K_TAB) + K_yCR* = IUPyxCODE(K_CR) + K_yBS* = IUPyxCODE(K_BS) + K_yPAUSE* = IUPyxCODE(K_PAUSE) + K_yESC* = IUPyxCODE(K_ESC) + K_yCcedilla* = IUPyxCODE(K_ccedilla) + K_yF1* = IUPyxCODE(K_F1) + K_yF2* = IUPyxCODE(K_F2) + K_yF3* = IUPyxCODE(K_F3) + K_yF4* = IUPyxCODE(K_F4) + K_yF5* = IUPyxCODE(K_F5) + K_yF6* = IUPyxCODE(K_F6) + K_yF7* = IUPyxCODE(K_F7) + K_yF8* = IUPyxCODE(K_F8) + K_yF9* = IUPyxCODE(K_F9) + K_yF10* = IUPyxCODE(K_F10) + K_yF11* = IUPyxCODE(K_F11) + K_yF12* = IUPyxCODE(K_F12) + K_yPrint* = IUPyxCODE(K_Print) + K_yMenu* = IUPyxCODE(K_Menu) + + K_sPlus* = IUPsxCODE(K_plus) + K_sComma* = IUPsxCODE(K_comma) + K_sMinus* = IUPsxCODE(K_minus) + K_sPeriod* = IUPsxCODE(K_period) + K_sSlash* = IUPsxCODE(K_slash) + K_sAsterisk* = IUPsxCODE(K_asterisk) + + K_cupperA* = IUPcxCODE(K_upperA) + K_cupperB* = IUPcxCODE(K_upperB) + K_cupperC* = IUPcxCODE(K_upperC) + K_cupperD* = IUPcxCODE(K_upperD) + K_cupperE* = IUPcxCODE(K_upperE) + K_cupperF* = IUPcxCODE(K_upperF) + K_cupperG* = IUPcxCODE(K_upperG) + K_cupperH* = IUPcxCODE(K_upperH) + K_cupperI* = IUPcxCODE(K_upperI) + K_cupperJ* = IUPcxCODE(K_upperJ) + K_cupperK* = IUPcxCODE(K_upperK) + K_cupperL* = IUPcxCODE(K_upperL) + K_cupperM* = IUPcxCODE(K_upperM) + K_cupperN* = IUPcxCODE(K_upperN) + K_cupperO* = IUPcxCODE(K_upperO) + K_cupperP* = IUPcxCODE(K_upperP) + K_cupperQ* = IUPcxCODE(K_upperQ) + K_cupperR* = IUPcxCODE(K_upperR) + K_cupperS* = IUPcxCODE(K_upperS) + K_cupperT* = IUPcxCODE(K_upperT) + K_cupperU* = IUPcxCODE(K_upperU) + K_cupperV* = IUPcxCODE(K_upperV) + K_cupperW* = IUPcxCODE(K_upperW) + K_cupperX* = IUPcxCODE(K_upperX) + K_cupperY* = IUPcxCODE(K_upperY) + K_cupperZ* = IUPcxCODE(K_upperZ) + K_c1* = IUPcxCODE(K_1) + K_c2* = IUPcxCODE(K_2) + K_c3* = IUPcxCODE(K_3) + K_c4* = IUPcxCODE(K_4) + K_c5* = IUPcxCODE(K_5) + K_c6* = IUPcxCODE(K_6) + K_c7* = IUPcxCODE(K_7) + K_c8* = IUPcxCODE(K_8) + K_c9* = IUPcxCODE(K_9) + K_c0* = IUPcxCODE(K_0) + K_cPlus* = IUPcxCODE(K_plus) + K_cComma* = IUPcxCODE(K_comma) + K_cMinus* = IUPcxCODE(K_minus) + K_cPeriod* = IUPcxCODE(K_period) + K_cSlash* = IUPcxCODE(K_slash) + K_cSemicolon* = IUPcxCODE(K_semicolon) + K_cEqual* = IUPcxCODE(K_equal) + K_cBracketleft* = IUPcxCODE(K_bracketleft) + K_cBracketright* = IUPcxCODE(K_bracketright) + K_cBackslash* = IUPcxCODE(K_backslash) + K_cAsterisk* = IUPcxCODE(K_asterisk) + + K_mupperA* = IUPmxCODE(K_upperA) + K_mupperB* = IUPmxCODE(K_upperB) + K_mupperC* = IUPmxCODE(K_upperC) + K_mupperD* = IUPmxCODE(K_upperD) + K_mupperE* = IUPmxCODE(K_upperE) + K_mupperF* = IUPmxCODE(K_upperF) + K_mupperG* = IUPmxCODE(K_upperG) + K_mupperH* = IUPmxCODE(K_upperH) + K_mupperI* = IUPmxCODE(K_upperI) + K_mupperJ* = IUPmxCODE(K_upperJ) + K_mupperK* = IUPmxCODE(K_upperK) + K_mupperL* = IUPmxCODE(K_upperL) + K_mupperM* = IUPmxCODE(K_upperM) + K_mupperN* = IUPmxCODE(K_upperN) + K_mupperO* = IUPmxCODE(K_upperO) + K_mupperP* = IUPmxCODE(K_upperP) + K_mupperQ* = IUPmxCODE(K_upperQ) + K_mupperR* = IUPmxCODE(K_upperR) + K_mupperS* = IUPmxCODE(K_upperS) + K_mupperT* = IUPmxCODE(K_upperT) + K_mupperU* = IUPmxCODE(K_upperU) + K_mupperV* = IUPmxCODE(K_upperV) + K_mupperW* = IUPmxCODE(K_upperW) + K_mupperX* = IUPmxCODE(K_upperX) + K_mupperY* = IUPmxCODE(K_upperY) + K_mupperZ* = IUPmxCODE(K_upperZ) + K_m1* = IUPmxCODE(K_1) + K_m2* = IUPmxCODE(K_2) + K_m3* = IUPmxCODE(K_3) + K_m4* = IUPmxCODE(K_4) + K_m5* = IUPmxCODE(K_5) + K_m6* = IUPmxCODE(K_6) + K_m7* = IUPmxCODE(K_7) + K_m8* = IUPmxCODE(K_8) + K_m9* = IUPmxCODE(K_9) + K_m0* = IUPmxCODE(K_0) + K_mPlus* = IUPmxCODE(K_plus) + K_mComma* = IUPmxCODE(K_comma) + K_mMinus* = IUPmxCODE(K_minus) + K_mPeriod* = IUPmxCODE(K_period) + K_mSlash* = IUPmxCODE(K_slash) + K_mSemicolon* = IUPmxCODE(K_semicolon) + K_mEqual* = IUPmxCODE(K_equal) + K_mBracketleft* = IUPmxCODE(K_bracketleft) + K_mBracketright* = IUPmxCODE(K_bracketright) + K_mBackslash* = IUPmxCODE(K_backslash) + K_mAsterisk* = IUPmxCODE(K_asterisk) + + K_yA* = IUPyxCODE(K_upperA) + K_yB* = IUPyxCODE(K_upperB) + K_yC* = IUPyxCODE(K_upperC) + K_yD* = IUPyxCODE(K_upperD) + K_yE* = IUPyxCODE(K_upperE) + K_yF* = IUPyxCODE(K_upperF) + K_yG* = IUPyxCODE(K_upperG) + K_yH* = IUPyxCODE(K_upperH) + K_yI* = IUPyxCODE(K_upperI) + K_yJ* = IUPyxCODE(K_upperJ) + K_yK* = IUPyxCODE(K_upperK) + K_yL* = IUPyxCODE(K_upperL) + K_yM* = IUPyxCODE(K_upperM) + K_yN* = IUPyxCODE(K_upperN) + K_yO* = IUPyxCODE(K_upperO) + K_yP* = IUPyxCODE(K_upperP) + K_yQ* = IUPyxCODE(K_upperQ) + K_yR* = IUPyxCODE(K_upperR) + K_yS* = IUPyxCODE(K_upperS) + K_yT* = IUPyxCODE(K_upperT) + K_yU* = IUPyxCODE(K_upperU) + K_yV* = IUPyxCODE(K_upperV) + K_yW* = IUPyxCODE(K_upperW) + K_yX* = IUPyxCODE(K_upperX) + K_yY* = IUPyxCODE(K_upperY) + K_yZ* = IUPyxCODE(K_upperZ) + K_y1* = IUPyxCODE(K_1) + K_y2* = IUPyxCODE(K_2) + K_y3* = IUPyxCODE(K_3) + K_y4* = IUPyxCODE(K_4) + K_y5* = IUPyxCODE(K_5) + K_y6* = IUPyxCODE(K_6) + K_y7* = IUPyxCODE(K_7) + K_y8* = IUPyxCODE(K_8) + K_y9* = IUPyxCODE(K_9) + K_y0* = IUPyxCODE(K_0) + K_yPlus* = IUPyxCODE(K_plus) + K_yComma* = IUPyxCODE(K_comma) + K_yMinus* = IUPyxCODE(K_minus) + K_yPeriod* = IUPyxCODE(K_period) + K_ySlash* = IUPyxCODE(K_slash) + K_ySemicolon* = IUPyxCODE(K_semicolon) + K_yEqual* = IUPyxCODE(K_equal) + K_yBracketleft* = IUPyxCODE(K_bracketleft) + K_yBracketright* = IUPyxCODE(K_bracketright) + K_yBackslash* = IUPyxCODE(K_backslash) + K_yAsterisk* = IUPyxCODE(K_asterisk) + +proc ControlsOpen*(): cint {.cdecl, importc: "IupControlsOpen", dynlib: dllname.} +proc ControlsClose*() {.cdecl, importc: "IupControlsClose", dynlib: dllname.} + +proc OldValOpen*() {.cdecl, importc: "IupOldValOpen", dynlib: dllname.} +proc OldTabsOpen*() {.cdecl, importc: "IupOldTabsOpen", dynlib: dllname.} + +proc Colorbar*(): PIhandle {.cdecl, importc: "IupColorbar", dynlib: dllname.} +proc Cells*(): PIhandle {.cdecl, importc: "IupCells", dynlib: dllname.} +proc ColorBrowser*(): PIhandle {.cdecl, importc: "IupColorBrowser", dynlib: dllname.} +proc Gauge*(): PIhandle {.cdecl, importc: "IupGauge", dynlib: dllname.} +proc Dial*(theType: cstring): PIhandle {.cdecl, importc: "IupDial", dynlib: dllname.} +proc Matrix*(action: cstring): PIhandle {.cdecl, importc: "IupMatrix", dynlib: dllname.} + +# IupMatrix utilities +proc MatSetAttribute*(ih: PIhandle, name: cstring, lin, col: cint, + value: cstring) {. + cdecl, importc: "IupMatSetAttribute", dynlib: dllname.} +proc MatStoreAttribute*(ih: PIhandle, name: cstring, lin, col: cint, + value: cstring) {.cdecl, + importc: "IupMatStoreAttribute", dynlib: dllname.} +proc MatGetAttribute*(ih: PIhandle, name: cstring, lin, col: cint): cstring {. + cdecl, importc: "IupMatGetAttribute", dynlib: dllname.} +proc MatGetInt*(ih: PIhandle, name: cstring, lin, col: cint): cint {. + cdecl, importc: "IupMatGetInt", dynlib: dllname.} +proc MatGetFloat*(ih: PIhandle, name: cstring, lin, col: cint): cfloat {. + cdecl, importc: "IupMatGetFloat", dynlib: dllname.} +proc MatSetfAttribute*(ih: PIhandle, name: cstring, lin, col: cint, + format: cstring) {.cdecl, + importc: "IupMatSetfAttribute", + dynlib: dllname, varargs.} + +# Used by IupColorbar +const + IUP_PRIMARY* = -1 + IUP_SECONDARY* = -2 + +# Initialize PPlot widget class +proc PPlotOpen*() {.cdecl, importc: "IupPPlotOpen", dynlib: dllname.} + +# Create an PPlot widget instance +proc PPlot*: PIhandle {.cdecl, importc: "IupPPlot", dynlib: dllname.} + +# Add dataset to plot +proc PPlotBegin*(ih: PIhandle, strXdata: cint) {. + cdecl, importc: "IupPPlotBegin", dynlib: dllname.} +proc PPlotAdd*(ih: PIhandle, x, y: cfloat) {. + cdecl, importc: "IupPPlotAdd", dynlib: dllname.} +proc PPlotAddStr*(ih: PIhandle, x: cstring, y: cfloat) {. + cdecl, importc: "IupPPlotAddStr", dynlib: dllname.} +proc PPlotEnd*(ih: PIhandle): cint {. + cdecl, importc: "IupPPlotEnd", dynlib: dllname.} + +proc PPlotInsertStr*(ih: PIhandle, index, sample_index: cint, x: cstring, + y: cfloat) {.cdecl, importc: "IupPPlotInsertStr", + dynlib: dllname.} +proc PPlotInsert*(ih: PIhandle, index, sample_index: cint, + x, y: cfloat) {. + cdecl, importc: "IupPPlotInsert", dynlib: dllname.} + +# convert from plot coordinates to pixels +proc PPlotTransform*(ih: PIhandle, x, y: cfloat, ix, iy: var cint) {. + cdecl, importc: "IupPPlotTransform", dynlib: dllname.} + +# Plot on the given device. Uses a "cdCanvas*". +proc PPlotPaintTo*(ih: PIhandle, cnv: pointer) {. + cdecl, importc: "IupPPlotPaintTo", dynlib: dllname.} + + |