summaryrefslogtreecommitdiff
path: root/include/delphi/m_icolib.inc
diff options
context:
space:
mode:
Diffstat (limited to 'include/delphi/m_icolib.inc')
-rw-r--r--include/delphi/m_icolib.inc106
1 files changed, 106 insertions, 0 deletions
diff --git a/include/delphi/m_icolib.inc b/include/delphi/m_icolib.inc
new file mode 100644
index 0000000000..3c358c3f49
--- /dev/null
+++ b/include/delphi/m_icolib.inc
@@ -0,0 +1,106 @@
+{$IFNDEF ICOLIB}
+{$DEFINE ICOLIB}
+
+type
+// WARNING: do not use Translate(TS) for p(t)szSection or p(t)szDescription as they
+// are translated by the core, which may lead to double translation.
+// Use LPGEN instead which are just dummy wrappers/markers for "lpgen.pl".
+ PSKINICONDESC = ^TSKINICONDESC;
+ TSKINICONDESC = record
+ cbSize :int;
+ szSection :TChar; // [TRANSLATED-BY-CORE] section name used to group icons
+ szDescription :TChar; // [TRANSLATED-BY-CORE] description for options dialog
+ pszName :PAnsiChar; // name to refer to icon when playing and in db
+ // this name is miranda-wide. so use prefixes of
+ // your plugin: "isee_connect", "clist_delete", etc
+ szDefaultFile :TChar; // default icon file to use
+ iDefaultIndex :int; // index of icon in default file
+ // V2
+ hDefaultIcon :HICON; // handle to default icon
+ // V3
+ cx, cy :int; // dimensions of icon (if 0 then standard size icon (big and small options available)
+ // new
+ flags :int;
+ end;
+
+const
+ SIDF_SORTED = 1; // Icons in section are sorted by name
+ SIDF_UNICODE = $100; // Section and Description are in UCS-2
+ SIDF_PATH_UNICODE = $200; // Default File is in UCS-2
+ SIDF_ALL_UNICODE = SIDF_PATH_UNICODE or SIDF_UNICODE;
+
+const
+{
+ Add a icon into options UI
+
+ wParam = 0
+ lParam = PSKINICONDESC
+ returns a handle to the newly added item
+}
+ MS_SKIN2_ADDICON:PAnsiChar = 'Skin2/Icons/AddIcon';
+
+{
+ Remove a icon from options UI
+
+ wParam = 0
+ lParam = pszName
+ WARNING: This will invalidate all HICONs retrieved for specified pszName
+}
+ MS_SKIN2_REMOVEICON:PAnsiChar = 'Skin2/Icons/RemoveIcon';
+{
+ Retrieve HICON with name specified in lParam
+ Returned HICON SHOULDN'T be destroyed, it managed by IcoLib
+
+ wParam = 0 - small 1 - big
+ lParam = pszName
+}
+ MS_SKIN2_GETICON :PAnsiChar = 'Skin2/Icons/GetIcon';
+
+{
+ Retrieve an icolib handle for icon by name specified in lParam
+
+ wParam = 0
+ lParam = (LPARAM)(char*)pszName
+}
+ MS_SKIN2_GETICONHANDLE:PAnsiChar = 'Skin2/Icons/GetIconHandle';
+
+{
+ Retrieve HICON with HANDLE specified in lParam
+ Returned HICON SHOULDN'T be destroyed, it is managed by IcoLib
+
+ wParam = (WPARAM)0 - small 1 - big
+ lParam = (HANDLE)hIcoLibIcon
+}
+ MS_SKIN2_GETICONBYHANDLE:PAnsiChar = 'Skin2/Icons/GetIconByHandle';
+
+{
+ Add reference to HICON
+
+ wParam = (WPARAM)HICON
+ lParam = 0 - small 1 - big
+}
+ MS_SKIN2_ADDREFICON:PAnsiChar = 'Skin2/Icons/AddRef';
+
+{
+ Retrieved HICON is not needed anymore (this helps optimize GDI usage)
+
+ wParam = HICON (optional)
+ lParam = pszName (optional) // at least one needs to be specified
+}
+ MS_SKIN2_RELEASEICON :PAnsiChar = 'Skin2/Icons/ReleaseIcon';
+ MS_SKIN2_RELEASEICONBIG:PAnsiChar = 'Skin2/Icons/ReleaseIconBig';
+
+{
+ Check whether HICON is managed by IcoLib
+
+ wParam = (WPARAM)HICON
+ lParam = 0
+}
+ MS_SKIN2_ISMANAGEDICON:PAnsiChar = 'Skin2/Icons/IsManaged';
+
+{
+ Icons change notification
+}
+ ME_SKIN2_ICONSCHANGED:PAnsiChar = 'Skin2/IconsChanged';
+
+{$ENDIF}