home *** CD-ROM | disk | FTP | other *** search
/ PC World 2007 May / PCWorld_2007-05_cd.bin / system / samurize / samurize_1.64.3_2.exe / plugins / sdksample.dpr < prev    next >
Text File  |  2004-04-09  |  9KB  |  246 lines

  1. library sdksample;
  2.  
  3. uses
  4.   windows,graphics,gr32,dialogs,
  5.   SysUtils;
  6.  
  7. // The init() function tells Samurize the names of the functions your source plugin provides.
  8. // List them like so:
  9. //    'Func1|Func2|...|FuncN'
  10. // SOURCE PLUGINS ONLY
  11. function init():PChar;stdcall;
  12. begin
  13.     Result:= 'helloworld';
  14. end;
  15.  
  16.  
  17. // getinfo() should return information about your plugin depending on the passed integer value.
  18. // 0: Plugin name
  19. // 1: Author name
  20. // 2: Plugin version
  21. // 3: Creation date
  22. // 4: Last modified date
  23. // 5: Website
  24. // 6: Contact email address
  25. //
  26. // This information is displayed when the 'About' button is pressed in the config editor when your plugin
  27. // is selected.
  28. //
  29. // This function is optional.
  30. function getinfo(num:Integer):PChar; stdcall;
  31. begin
  32.     case num of
  33.         0: Result := 'Sample Visualization plugin';
  34.         1: Result := 'NeM';
  35.         2: Result := '0.1';
  36.         3: Result := '29/03/04';
  37.         4: Result := '29/03/04';
  38.         5: Result := 'http://www.samurize.com';
  39.         6: Result := 'nem@samurize.com';
  40.         else
  41.             Result := '';
  42.     end;
  43. end;
  44.     
  45.     
  46. // DLLType: Tells Samurize what type of plugin this is.
  47. // because this dlltype() function is declared, Samurize will assume you are using the SDK v2.0;
  48. //     * All functions will be called with an additional first parameter, the meter's unique_id
  49. //
  50. // Omit the dlltype() function to use the old SDK (the uniqueID will be omitted)
  51. //
  52. // The value you should return is a summation of any or all of the following values:
  53. // 1: Source plugin
  54. // 2: Visual plugin
  55. // ... (more to follow!)
  56. function dlltype(): Integer;
  57. begin
  58.     // This plugin is a source and visual plugin, so we return 3 (1 + 2)
  59.     result := 3;
  60. end;
  61.     
  62.  
  63. // dllstartup() is called every time Samurize creates a meter that uses this plugin.
  64. // The 'hwnd' parameter is the window handle of the instance of Samurize that called this function.
  65. // 'hwnd' will be 0 if called from the config editor.
  66. // The 'dlltype' parameter indicates the plugin 'type' (1 for source plugins, 2 for visual plugins) being loaded.
  67. // This function should return a unique integer ID that Samurize remembers and uses for other functions
  68. // (this is so multiple instances of Samurize that use this do not conflict).
  69. //
  70. // Any memory allocation needed on a meter-by-meter basis should be done in this function.
  71. //
  72. // If your plugin is very simple and does not need to keep any global variables that may cause conflicts,
  73. // just return 0 (or omit this function).
  74. function dllstartup(hwnd : HWND; dlltype : Integer):Integer; stdcall;
  75. begin
  76.     // using the uptime is an ok (not perfect!) way of obtaining a unique ID
  77.     result := gettickcount;
  78. end;
  79.  
  80.  
  81.  
  82. // dllshutdown() is called every time a meter is destroyed by Samurize.
  83. // The 'id' parameter is the uniqueID your plugin assigned to the meter (returned by dllstartup)
  84. // This function should always return 0.
  85. //
  86. // Any memory releasing needed on a meter-by-meter basis should be done in this function.
  87. //
  88. // If your plugin does not need to free any memory, this function may be omitted.
  89. function dllshutdown(id : Integer):Integer; stdcall;
  90. begin
  91.     //
  92.     result := 0;
  93. end;
  94.  
  95.  
  96. // The getparam() function should return a list of the parameters that the passed function requires.
  97. // Parameters are delimited by '|' characters. Note that there needs to be a final '|' after the last parameter.
  98. // Appending '=' and then a value to the end of a parameter indicates the default value for that parameter.
  99. // SOURCE PLUGINS ONLY
  100. Function getparam(func: PChar):PChar;stdcall;
  101. begin
  102.     If func = 'helloworld' then
  103.     Result := 'param1=1|param2=2|'
  104.     else
  105.     Result := '';
  106. end;
  107.     
  108. // configure() is called when the user clicks on the "Plugin Settings" button in Samurize.
  109. //
  110. // You can display a popup dialog with global settings for your plugin (eg. a box prompting for
  111. // your location for a weather plugin). These settings will be applied for all meters that use
  112. // this source plugin.
  113. //
  114. // Note that it is your responsibility to save these settings to the registry/settings file/whatever - 
  115. // they aren't stored by Samurize anywhere.
  116. //
  117. // SOURCE PLUGINS ONLY
  118. function configure():Integer; stdcall;
  119. begin
  120.     ShowMessage('Place a configuration dialog here');
  121.     Result := 0;
  122. end;
  123.  
  124.     
  125. // The one source plugin function defined for this plugin
  126. // Note that because we are using the SDK 2.0, we add an extra
  127. // integer value to the start of the parameter list.
  128. function HelloWorld(id:integer; param1:pchar; param2:pchar): PChar; stdcall; export;
  129. begin
  130.     result := Pchar('Hello World!%bThe id of this meter is '+inttostr(id)+'.%bparam1='+param1+', param2='+param2);
  131. end;
  132.  
  133.  
  134.     
  135.  
  136.  
  137. // repaint() is called every time Samurize refreshes its display.
  138. // The parameters are:
  139. //    h:     the device context (HDC) for the bitmap you should draw on
  140. //    id:     the uniqueID assigned to the meter that is calling this function
  141. //        (assigned by the dllstartup() function)
  142. //    value:     the value of the meter in string form (eg. '20', 'Some text')
  143. //    width:    the width of the bitmap
  144. //    height:    the height of the bitmap
  145. //
  146. // The bitmap you are drawing on is a 32-bit bitmap with alpha channel. Thus if you use GDI
  147. // functions to draw, the alpha will be 0 and you will see nothing. You can either use
  148. // GDI+ (supports transparency) or a custom library such as the graphics32 library for Delphi
  149. // (this plugin uses the graphics32 library).
  150. //
  151. // VISUAL PLUGINS ONLY
  152. Function repaint(h:hDC; id:Integer; Value:PChar; width,height:integer):Integer;stdcall;
  153. var
  154.     bmp : TBitmap32;
  155.     val : extended;
  156. begin
  157.  
  158.     // create a temporary bitmap to draw to
  159.     bmp := TBitmap32.Create;
  160.  
  161.     // convert value to a usable floating point number
  162.     val := strtofloat(value);
  163.  
  164.     // set bitmap size
  165.     bmp.SetSize(width,height);
  166.  
  167.     // create a white background
  168.     bmp.clear(gr32.clTrWhite32);
  169.  
  170.     // draw a vertical line kinda like a progressbar
  171.     bmp.LineF(val/100*width,0,val/100*width,height, gr32.clGreen32);
  172.  
  173.     // draw the temporary bitmap to the passed DC
  174.     bmp.DrawTo(h, 0,0);
  175.  
  176.     // free the temporary bitmap
  177.     bmp.Free;
  178.  
  179.     result := 0;
  180. end;
  181.  
  182. // vis_configure() is called when the user clicks on the "Configure..." button in Samurize.
  183. // 'id' is the meter's unique id returned to Samurize by the dllstartup() function - this is the
  184. // meter that is being configured.
  185. //
  186. // You can display some kind of popup window that allows users to specify various display settings
  187. // for this visual plugin. Note that you need to store the settings for each meter individually for
  188. // saving later on.
  189. //
  190. // This function is optional - if it is not provided, you will not be able to specify settings
  191. // on a meter-by-meter basis.
  192. //
  193. // VISUAL PLUGINS ONLY
  194. function vis_configure(id : Integer):Integer; stdcall;
  195. begin
  196.     //
  197.     result := 0;
  198. end;
  199.  
  200. // load_settings() is called when the config is loaded from file in the config editor
  201. // or the clients. Your plugin should load its settings from the given section of the
  202. // specified config file.
  203. //
  204. //    id:        the unique ID assigned to the meter by the dllstartup() function
  205. //    inifile:    the full path to the config file
  206. //    section:    the section of the config file where the values are listed
  207. //
  208. // VISUAL PLUGINS ONLY
  209. function load_settings(id:Integer; inifile:PChar; section:PChar):Integer; stdcall;
  210. begin
  211.     //
  212.     result := 0;
  213. end;
  214.  
  215. // save_settings() is called when the config is being saved by the config editor.
  216. // Your plugin should save its settings to the given section of the specified config file.
  217. //    id:        the unique ID assigned to the meter by the dllstartup() function
  218. //    inifile:    the full path to the config file
  219. //    section:    the section of the config file where the values should be saved
  220. //
  221. // VISUAL PLUGINS ONLY
  222. function save_settings(id:Integer; inifile:PChar; section:PChar):Integer; stdcall;
  223. begin
  224.     //
  225.     result := 0;
  226. end;
  227.  
  228.  
  229. exports dllstartup name 'dllstartup';
  230. exports dllshutdown name 'dllshutdown';
  231. exports helloworld name 'helloworld';
  232. exports vis_configure name 'vis_configure';
  233. exports configure name 'configure';
  234. exports load_settings name 'load_settings';
  235. exports save_settings name 'save_settings';
  236. exports getinfo name 'getinfo';
  237. exports Repaint name 'repaint';
  238. exports Init name 'init';
  239. exports DLLType name 'dlltype';
  240. exports getparam name 'getparam';
  241. begin
  242.  
  243. end.
  244.  
  245.  
  246.