rsence 2.0.0.0.pre

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (311) hide show
  1. data/INSTALL.rdoc +295 -0
  2. data/LICENSE +622 -0
  3. data/README.rdoc +24 -0
  4. data/VERSION +1 -0
  5. data/bin/build_client.rb +254 -0
  6. data/bin/help +6 -0
  7. data/bin/launch.rb +120 -0
  8. data/bin/rdoc.sh +2 -0
  9. data/bin/restart +6 -0
  10. data/bin/rsence +120 -0
  11. data/bin/run +6 -0
  12. data/bin/run.rb +6 -0
  13. data/bin/save +6 -0
  14. data/bin/start +6 -0
  15. data/bin/status +6 -0
  16. data/bin/stop +6 -0
  17. data/conf/config.ru +5 -0
  18. data/conf/default_conf.yaml +337 -0
  19. data/conf/default_strings.yaml +77 -0
  20. data/conf/local_conf.yaml +14 -0
  21. data/conf/unicorn.conf +78 -0
  22. data/js/comm/comm/autosync/autosync.js +18 -0
  23. data/js/comm/comm/autosync/js.inc +0 -0
  24. data/js/comm/comm/comm.js +195 -0
  25. data/js/comm/comm/js.inc +0 -0
  26. data/js/comm/comm/queue/js.inc +0 -0
  27. data/js/comm/comm/queue/queue.js +183 -0
  28. data/js/comm/comm/session/js.inc +0 -0
  29. data/js/comm/comm/session/session.js +51 -0
  30. data/js/comm/comm/sessionwatcher/js.inc +0 -0
  31. data/js/comm/comm/sessionwatcher/sessionwatcher.js +43 -0
  32. data/js/comm/comm/transporter/js.inc +0 -0
  33. data/js/comm/comm/transporter/transporter.js +257 -0
  34. data/js/comm/comm/urlresponder/js.inc +0 -0
  35. data/js/comm/comm/urlresponder/urlresponder.js +148 -0
  36. data/js/comm/comm/values/js.inc +0 -0
  37. data/js/comm/comm/values/values.js +432 -0
  38. data/js/comm/jsloader/js.inc +0 -0
  39. data/js/comm/jsloader/jsloader.js +114 -0
  40. data/js/comm/reloadapp/js.inc +0 -0
  41. data/js/comm/reloadapp/reloadapp.js +150 -0
  42. data/js/comm/reloadapp/themes/default/reloadapp_warning-ie6.gif +0 -0
  43. data/js/comm/reloadapp/themes/default/reloadapp_warning.png +0 -0
  44. data/js/comm/sha/js.inc +0 -0
  45. data/js/comm/sha/sha.js +432 -0
  46. data/js/comm/values/value/js.inc +0 -0
  47. data/js/comm/values/value/value.js +182 -0
  48. data/js/comm/values/valuematrix/js.inc +0 -0
  49. data/js/comm/values/valuematrix/valuematrix.js +138 -0
  50. data/js/controls/button/button.js +57 -0
  51. data/js/controls/button/js.inc +0 -0
  52. data/js/controls/button/themes/bright/button.css +89 -0
  53. data/js/controls/button/themes/bright/button.html +7 -0
  54. data/js/controls/button/themes/bright/button_parts1-ie6.gif +0 -0
  55. data/js/controls/button/themes/bright/button_parts1.png +0 -0
  56. data/js/controls/button/themes/default/button.css +89 -0
  57. data/js/controls/button/themes/default/button.html +7 -0
  58. data/js/controls/button/themes/default/button_parts1-ie6.gif +0 -0
  59. data/js/controls/button/themes/default/button_parts1.png +0 -0
  60. data/js/controls/checkbox/checkbox.js +47 -0
  61. data/js/controls/checkbox/js.inc +0 -0
  62. data/js/controls/checkbox/themes/default/checkbox.css +69 -0
  63. data/js/controls/checkbox/themes/default/checkbox.html +5 -0
  64. data/js/controls/checkbox/themes/default/checkbox_parts1-ie6.gif +0 -0
  65. data/js/controls/checkbox/themes/default/checkbox_parts1.png +0 -0
  66. data/js/controls/datetime/calendar/calendar.js +197 -0
  67. data/js/controls/datetime/calendar/js.inc +0 -0
  68. data/js/controls/datetime/calendar/themes/default/calendar.css +108 -0
  69. data/js/controls/datetime/calendar/themes/default/calendar.html +9 -0
  70. data/js/controls/datetime/calendar/themes/default/calendar_arrows-ie6.gif +0 -0
  71. data/js/controls/datetime/calendar/themes/default/calendar_arrows.png +0 -0
  72. data/js/controls/datetime/datetimevalue/datetimevalue.js +246 -0
  73. data/js/controls/datetime/datetimevalue/js.inc +0 -0
  74. data/js/controls/datetime/timesheet/js.inc +0 -0
  75. data/js/controls/datetime/timesheet/themes/default/timesheet.css +30 -0
  76. data/js/controls/datetime/timesheet/themes/default/timesheet.html +2 -0
  77. data/js/controls/datetime/timesheet/timesheet.js +182 -0
  78. data/js/controls/datetime/timesheet_item/js.inc +0 -0
  79. data/js/controls/datetime/timesheet_item/themes/default/timesheet_item.css +42 -0
  80. data/js/controls/datetime/timesheet_item/themes/default/timesheet_item.html +8 -0
  81. data/js/controls/datetime/timesheet_item/timesheet_item.js +247 -0
  82. data/js/controls/datetime/timesheet_item_edit/js.inc +0 -0
  83. data/js/controls/datetime/timesheet_item_edit/timesheet_item_edit.js +274 -0
  84. data/js/controls/dialogs/alert_sheet/alert_sheet.js +62 -0
  85. data/js/controls/dialogs/alert_sheet/js.inc +0 -0
  86. data/js/controls/dialogs/confirm_sheet/confirm_sheet.js +36 -0
  87. data/js/controls/dialogs/confirm_sheet/js.inc +0 -0
  88. data/js/controls/dialogs/sheet/js.inc +0 -0
  89. data/js/controls/dialogs/sheet/sheet.js +83 -0
  90. data/js/controls/dialogs/sheet/themes/default/sheet.css +64 -0
  91. data/js/controls/dialogs/sheet/themes/default/sheet.html +14 -0
  92. data/js/controls/dialogs/sheet/themes/default/sheet_bg-ie6.gif +0 -0
  93. data/js/controls/dialogs/sheet/themes/default/sheet_bg.png +0 -0
  94. data/js/controls/dialogs/sheet/themes/default/sheet_dim-ie6.gif +0 -0
  95. data/js/controls/dialogs/sheet/themes/default/sheet_dim.png +0 -0
  96. data/js/controls/dialogs/sheet/themes/default/sheet_parts1-ie6.gif +0 -0
  97. data/js/controls/dialogs/sheet/themes/default/sheet_parts1.png +0 -0
  98. data/js/controls/dialogs/sheet/themes/default/sheet_parts2-ie6.gif +0 -0
  99. data/js/controls/dialogs/sheet/themes/default/sheet_parts2.png +0 -0
  100. data/js/controls/dialogs/sheet/themes/default/sheet_warning-ie6.gif +0 -0
  101. data/js/controls/dialogs/sheet/themes/default/sheet_warning.png +0 -0
  102. data/js/controls/imageview/imageview.js +108 -0
  103. data/js/controls/imageview/js.inc +0 -0
  104. data/js/controls/imageview/themes/default/blank.gif +0 -0
  105. data/js/controls/lists/checkboxlist/checkboxlist.js +170 -0
  106. data/js/controls/lists/checkboxlist/js.inc +0 -0
  107. data/js/controls/lists/listitems/js.inc +0 -0
  108. data/js/controls/lists/listitems/listitems.js +65 -0
  109. data/js/controls/lists/radiobuttonlist/js.inc +0 -0
  110. data/js/controls/lists/radiobuttonlist/radiobuttonlist.js +126 -0
  111. data/js/controls/passwordcontrol/js.inc +0 -0
  112. data/js/controls/passwordcontrol/passwordcontrol.js +22 -0
  113. data/js/controls/passwordcontrol/themes/default/passwordcontrol.css +0 -0
  114. data/js/controls/passwordcontrol/themes/default/passwordcontrol.html +18 -0
  115. data/js/controls/progress/progressbar/js.inc +0 -0
  116. data/js/controls/progress/progressbar/progressbar.js +36 -0
  117. data/js/controls/progress/progressbar/themes/default/progressbar.css +16 -0
  118. data/js/controls/progress/progressbar/themes/default/progressbar.html +2 -0
  119. data/js/controls/progress/progressindicator/js.inc +0 -0
  120. data/js/controls/progress/progressindicator/progressindicator.js +43 -0
  121. data/js/controls/radiobutton/js.inc +0 -0
  122. data/js/controls/radiobutton/radiobutton.js +41 -0
  123. data/js/controls/radiobutton/themes/default/radiobutton.css +69 -0
  124. data/js/controls/radiobutton/themes/default/radiobutton.html +5 -0
  125. data/js/controls/radiobutton/themes/default/radiobutton_parts1-ie6.gif +0 -0
  126. data/js/controls/radiobutton/themes/default/radiobutton_parts1.png +0 -0
  127. data/js/controls/sliders/slider/js.inc +0 -0
  128. data/js/controls/sliders/slider/slider.js +356 -0
  129. data/js/controls/sliders/slider/themes/default/hslider_tracks-ie6.gif +0 -0
  130. data/js/controls/sliders/slider/themes/default/hslider_tracks.png +0 -0
  131. data/js/controls/sliders/slider/themes/default/slider.css +108 -0
  132. data/js/controls/sliders/slider/themes/default/slider.html +5 -0
  133. data/js/controls/sliders/slider/themes/default/slider_thumbs-ie6.gif +0 -0
  134. data/js/controls/sliders/slider/themes/default/slider_thumbs.png +0 -0
  135. data/js/controls/sliders/vslider/js.inc +0 -0
  136. data/js/controls/sliders/vslider/themes/default/vslider.css +52 -0
  137. data/js/controls/sliders/vslider/themes/default/vslider.html +5 -0
  138. data/js/controls/sliders/vslider/themes/default/vslider_tracks-ie6.gif +0 -0
  139. data/js/controls/sliders/vslider/themes/default/vslider_tracks.png +0 -0
  140. data/js/controls/sliders/vslider/vslider.js +40 -0
  141. data/js/controls/stepper/js.inc +0 -0
  142. data/js/controls/stepper/stepper.js +212 -0
  143. data/js/controls/stepper/themes/default/stepper-ie6.gif +0 -0
  144. data/js/controls/stepper/themes/default/stepper.css +14 -0
  145. data/js/controls/stepper/themes/default/stepper.html +2 -0
  146. data/js/controls/stepper/themes/default/stepper.png +0 -0
  147. data/js/controls/stringview/js.inc +0 -0
  148. data/js/controls/stringview/stringview.js +49 -0
  149. data/js/controls/stringview/themes/default/stringview.css +8 -0
  150. data/js/controls/stringview/themes/default/stringview.html +1 -0
  151. data/js/controls/tab/js.inc +0 -0
  152. data/js/controls/tab/tab.js +276 -0
  153. data/js/controls/tab/themes/bright/tab.css +76 -0
  154. data/js/controls/tab/themes/bright/tab.html +6 -0
  155. data/js/controls/tab/themes/bright/tab_bg_color-ie6.gif +0 -0
  156. data/js/controls/tab/themes/bright/tab_bg_color.png +0 -0
  157. data/js/controls/tab/themes/bright/tab_border_pattern-ie6.gif +0 -0
  158. data/js/controls/tab/themes/bright/tab_border_pattern.png +0 -0
  159. data/js/controls/tab/themes/bright/tab_parts1-ie6.gif +0 -0
  160. data/js/controls/tab/themes/bright/tab_parts1.png +0 -0
  161. data/js/controls/tab/themes/default/tab.css +77 -0
  162. data/js/controls/tab/themes/default/tab.html +6 -0
  163. data/js/controls/tab/themes/default/tab_bg_color-ie6.gif +0 -0
  164. data/js/controls/tab/themes/default/tab_bg_color.png +0 -0
  165. data/js/controls/tab/themes/default/tab_border_pattern-ie6.gif +0 -0
  166. data/js/controls/tab/themes/default/tab_border_pattern.png +0 -0
  167. data/js/controls/tab/themes/default/tab_parts1-ie6.gif +0 -0
  168. data/js/controls/tab/themes/default/tab_parts1.png +0 -0
  169. data/js/controls/textarea/js.inc +0 -0
  170. data/js/controls/textarea/textarea.js +23 -0
  171. data/js/controls/textarea/themes/default/textarea.css +21 -0
  172. data/js/controls/textarea/themes/default/textarea.html +18 -0
  173. data/js/controls/textcontrol/js.inc +0 -0
  174. data/js/controls/textcontrol/textcontrol.js +372 -0
  175. data/js/controls/textcontrol/themes/default/textcontrol.css +107 -0
  176. data/js/controls/textcontrol/themes/default/textcontrol.html +18 -0
  177. data/js/controls/textcontrol/themes/default/textcontrol_parts1-ie6.gif +0 -0
  178. data/js/controls/textcontrol/themes/default/textcontrol_parts1.png +0 -0
  179. data/js/controls/textcontrol/themes/default/textcontrol_parts2-ie6.gif +0 -0
  180. data/js/controls/textcontrol/themes/default/textcontrol_parts2.png +0 -0
  181. data/js/controls/textcontrol/themes/default/textcontrol_parts3-ie6.gif +0 -0
  182. data/js/controls/textcontrol/themes/default/textcontrol_parts3.png +0 -0
  183. data/js/controls/uploader/js.inc +0 -0
  184. data/js/controls/uploader/themes/default/upload_progress.gif +0 -0
  185. data/js/controls/uploader/themes/default/uploader.css +108 -0
  186. data/js/controls/uploader/themes/default/uploader.html +27 -0
  187. data/js/controls/uploader/uploader.js +153 -0
  188. data/js/controls/validatorview/js.inc +0 -0
  189. data/js/controls/validatorview/themes/default/validator-ie6.gif +0 -0
  190. data/js/controls/validatorview/themes/default/validator.png +0 -0
  191. data/js/controls/validatorview/themes/default/validatorview.css +0 -0
  192. data/js/controls/validatorview/themes/default/validatorview.html +0 -0
  193. data/js/controls/validatorview/validatorview.js +55 -0
  194. data/js/controls/window/js.inc +0 -0
  195. data/js/controls/window/themes/default/window.css +219 -0
  196. data/js/controls/window/themes/default/window.html +17 -0
  197. data/js/controls/window/themes/default/window_bg_active-ie6.gif +0 -0
  198. data/js/controls/window/themes/default/window_bg_active.png +0 -0
  199. data/js/controls/window/themes/default/window_bg_inactive-ie6.gif +0 -0
  200. data/js/controls/window/themes/default/window_bg_inactive.png +0 -0
  201. data/js/controls/window/themes/default/window_buttons-ie6.gif +0 -0
  202. data/js/controls/window/themes/default/window_buttons.png +0 -0
  203. data/js/controls/window/themes/default/window_parts1-ie6.gif +0 -0
  204. data/js/controls/window/themes/default/window_parts1.png +0 -0
  205. data/js/controls/window/themes/default/window_parts2-ie6.gif +0 -0
  206. data/js/controls/window/themes/default/window_parts2.png +0 -0
  207. data/js/controls/window/window.js +284 -0
  208. data/js/core/class/class.js +317 -0
  209. data/js/core/class/js.inc +0 -0
  210. data/js/core/elem/elem.js +1376 -0
  211. data/js/core/elem/js.inc +0 -0
  212. data/js/core/event/event.js +1021 -0
  213. data/js/core/event/js.inc +0 -0
  214. data/js/core/iefix/ie_css_element.htc +5 -0
  215. data/js/core/iefix/ie_css_style.htc +5 -0
  216. data/js/core/iefix/iefix.js +359 -0
  217. data/js/core/iefix/js.inc +0 -0
  218. data/js/debugg/debugg.js +43 -0
  219. data/js/debugg/js.inc +0 -0
  220. data/js/foundation/application/application.js +209 -0
  221. data/js/foundation/application/js.inc +0 -0
  222. data/js/foundation/control/control.js +342 -0
  223. data/js/foundation/control/controldefaults/controldefaults.js +59 -0
  224. data/js/foundation/control/controldefaults/js.inc +0 -0
  225. data/js/foundation/control/dummyvalue/dummyvalue.js +50 -0
  226. data/js/foundation/control/dummyvalue/js.inc +0 -0
  227. data/js/foundation/control/dyncontrol/dyncontrol.js +494 -0
  228. data/js/foundation/control/dyncontrol/js.inc +0 -0
  229. data/js/foundation/control/dyncontrol/themes/default/dyncontrol.css +0 -0
  230. data/js/foundation/control/dyncontrol/themes/default/dyncontrol.html +0 -0
  231. data/js/foundation/control/eventresponder/eventresponder.js +713 -0
  232. data/js/foundation/control/eventresponder/js.inc +0 -0
  233. data/js/foundation/control/js.inc +0 -0
  234. data/js/foundation/control/valueresponder/js.inc +0 -0
  235. data/js/foundation/control/valueresponder/valueresponder.js +77 -0
  236. data/js/foundation/geom/point/js.inc +0 -0
  237. data/js/foundation/geom/point/point.js +202 -0
  238. data/js/foundation/geom/rect/js.inc +0 -0
  239. data/js/foundation/geom/rect/rect.js +610 -0
  240. data/js/foundation/json_renderer/js.inc +0 -0
  241. data/js/foundation/json_renderer/json_renderer.js +231 -0
  242. data/js/foundation/system/js.inc +0 -0
  243. data/js/foundation/system/system.js +369 -0
  244. data/js/foundation/thememanager/js.inc +0 -0
  245. data/js/foundation/thememanager/thememanager.js +387 -0
  246. data/js/foundation/view/js.inc +0 -0
  247. data/js/foundation/view/markupview/js.inc +0 -0
  248. data/js/foundation/view/markupview/markupview.js +113 -0
  249. data/js/foundation/view/morphanimation/js.inc +0 -0
  250. data/js/foundation/view/morphanimation/morphanimation.js +236 -0
  251. data/js/foundation/view/view.js +1804 -0
  252. data/js/foundation/view/viewdefaults/js.inc +0 -0
  253. data/js/foundation/view/viewdefaults/viewdefaults.js +25 -0
  254. data/js/views/centerview/centerview.js +45 -0
  255. data/js/views/centerview/js.inc +0 -0
  256. data/js/views/inlineview/inlineview.js +14 -0
  257. data/js/views/inlineview/js.inc +0 -0
  258. data/js/views/scrollview/js.inc +0 -0
  259. data/js/views/scrollview/scrollview.js +39 -0
  260. data/lib/conf/default.rb +220 -0
  261. data/lib/conf/wizard.rb +303 -0
  262. data/lib/daemon/daemon.rb +293 -0
  263. data/lib/http/broker.rb +102 -0
  264. data/lib/http/rackup.rb +88 -0
  265. data/lib/http/request.rb +69 -0
  266. data/lib/http/response.rb +63 -0
  267. data/lib/plugins/gui_plugin.rb +129 -0
  268. data/lib/plugins/guiparser.rb +114 -0
  269. data/lib/plugins/plugin.rb +652 -0
  270. data/lib/plugins/plugin_plugins.rb +47 -0
  271. data/lib/plugins/plugin_sqlite_db.rb +72 -0
  272. data/lib/plugins/plugin_util.rb +96 -0
  273. data/lib/plugins/pluginmanager.rb +517 -0
  274. data/lib/plugins/servlet.rb +69 -0
  275. data/lib/session/msg.rb +291 -0
  276. data/lib/session/sessionmanager.rb +491 -0
  277. data/lib/session/sessionstorage.rb +314 -0
  278. data/lib/transporter/transporter.rb +254 -0
  279. data/lib/util/gzstring.rb +5 -0
  280. data/lib/values/hvalue.rb +323 -0
  281. data/lib/values/valuemanager.rb +152 -0
  282. data/plugins/client_pkg/client_pkg.rb +186 -0
  283. data/plugins/client_pkg/info.yaml +25 -0
  284. data/plugins/client_pkg/lib/client_pkg_build.rb +569 -0
  285. data/plugins/client_pkg/lib/client_pkg_cache.rb +50 -0
  286. data/plugins/client_pkg/lib/client_pkg_serve.rb +210 -0
  287. data/plugins/client_pkg/log/build_log +0 -0
  288. data/plugins/index_html/img/loading.gif +0 -0
  289. data/plugins/index_html/img/riassence.gif +0 -0
  290. data/plugins/index_html/index_html.rb +150 -0
  291. data/plugins/index_html/tmpl/index.html +22 -0
  292. data/plugins/index_html/tmpl/startup_index.html +29 -0
  293. data/plugins/legacy/disabled +0 -0
  294. data/plugins/legacy/disabled- +0 -0
  295. data/plugins/legacy/info.yaml +22 -0
  296. data/plugins/legacy/legacy.rb +15 -0
  297. data/plugins/main/js/riassence_ns.js +87 -0
  298. data/plugins/main/main.rb +234 -0
  299. data/plugins/main/values.yaml +8 -0
  300. data/plugins/ticketservices/lib/common.rb +300 -0
  301. data/plugins/ticketservices/lib/favicon.rb +38 -0
  302. data/plugins/ticketservices/lib/file.rb +58 -0
  303. data/plugins/ticketservices/lib/img.rb +50 -0
  304. data/plugins/ticketservices/lib/objblob.rb +66 -0
  305. data/plugins/ticketservices/lib/rsrc.rb +34 -0
  306. data/plugins/ticketservices/lib/upload.rb +206 -0
  307. data/plugins/ticketservices/ticketservices.rb +268 -0
  308. data/var/db/.git_include +0 -0
  309. data/var/log/.git_include +0 -0
  310. data/var/run/.git_include +0 -0
  311. metadata +390 -0
File without changes
File without changes
File without changes
@@ -0,0 +1,77 @@
1
+ /* Riassence Framework
2
+ * Copyright 2006 Riassence Inc.
3
+ * http://riassence.com/
4
+ *
5
+ * You should have received a copy of the GNU General Public License along
6
+ * with this software package. If not, contact licensing@riassence.com
7
+ */
8
+
9
+
10
+ /*** = Description
11
+ ** Defines a minimal +HValue+ responder interface.
12
+ ** It's implemented by default by +HControl+.
13
+ ***/
14
+ HValueResponder = HClass.extend({
15
+
16
+ /** = Description
17
+ * Binds an HValue compatible instance to the component's valueObj. Also
18
+ * calls +setValue+. It should not be called from user code, instead
19
+ * use the +HValue+ instance method +bind+.
20
+ *
21
+ * = Parameter
22
+ * +_aValueObj+:: The HValue instance object to bind.
23
+ *
24
+ * = Returns
25
+ * +self+
26
+ *
27
+ **/
28
+ setValueObj: function(_valueObj) {
29
+ this.valueObj = _valueObj;
30
+ this.setValue(_valueObj.value);
31
+ return this;
32
+ },
33
+
34
+ /** = Description
35
+ * Checks, if the value given as parameter differs from +value+.
36
+ *
37
+ * = Parameters
38
+ * +_value+:: The value to be tested.
39
+ *
40
+ * = Returns
41
+ * A boolean true (different) or false (same).
42
+ *
43
+ **/
44
+ valueDiffers: function(_value){
45
+ return (COMM.Values.encode(_value) !== COMM.Values.encode(this.value));
46
+ },
47
+
48
+ /** = Description
49
+ * Assigns the object a new value.
50
+ * Extend it, if your component needs to do validation of the new value.
51
+ * For +HControl+ instances, extend HControl#refreshValue to do something when
52
+ * the +value+ has been set.
53
+ *
54
+ * = Parameter
55
+ * +_value+:: The new value. Allowed values depend on the component type
56
+ * and other usage of the bound +HValue+ instance +self.valueObj+.
57
+ *
58
+ * = Returns
59
+ * +self+
60
+ *
61
+ **/
62
+ setValue: function(_value) {
63
+ if(_value !== undefined && this['valueObj'] && this.valueDiffers(_value)) {
64
+ var _valueManager = COMM.Values;
65
+ this.value = _value;
66
+ if( _valueManager._builtins.indexOf( _valueManager.type(_value) ) === -1 ){
67
+ this.valueObj.set( _valueManager.clone( _value ) );
68
+ }
69
+ else {
70
+ this.valueObj.set( _value );
71
+ }
72
+ (this['refresh'] !== undefined) && (typeof this.refresh === 'function') && this.refresh();
73
+ }
74
+ return this;
75
+ }
76
+
77
+ });
File without changes
@@ -0,0 +1,202 @@
1
+ /* Riassence Framework
2
+ * Copyright 2006 Riassence Inc.
3
+ * http://riassence.com/
4
+ *
5
+ * You should have received a copy of the GNU General Public License along
6
+ * with this software package. If not, contact licensing@riassence.com
7
+ */
8
+
9
+ /*** = Description
10
+ ** Point objects represent points on a two-dimensional coordinate grid. The
11
+ ** object's coordinates are stored as public x and y data members.
12
+ **
13
+ ** = Instance Variables
14
+ ** +type+:: '[HPoint]'
15
+ ** +x+:: The X coordinate of the point
16
+ ** +y+:: The Y coordinate of the point
17
+ **
18
+ ***/
19
+ HPoint = HClass.extend({
20
+
21
+ /** = Description
22
+ * Creates a new Point object that corresponds to the point (x, y), or that's
23
+ * copied from point. If no coordinate values are assigned, the Point's
24
+ * location is indeterminate.
25
+ *
26
+ * = Parameters
27
+ * by using a HPoint instance:
28
+ * +point+:: Another +HPoint+ or other compatible structure.
29
+ *
30
+ * by using separate numeric coordinates:
31
+ * +x+:: x coordinate
32
+ * +y+:: y coordinate
33
+ *
34
+ * = Usage
35
+ * var myPoint = new HPoint(100,200);
36
+ * var mySameCoordPoint = new HPoint( myPoint );
37
+ *
38
+ **/
39
+ constructor: function() {
40
+ this.type = '[HPoint]';
41
+ var _args=arguments;
42
+
43
+ if (_args.length === 0) {
44
+ this._constructorDefault();
45
+ }
46
+ else if (_args.length === 2) {
47
+ this._constructorValues(_args[0],_args[1]);
48
+ }
49
+ else if (_args.length === 1) {
50
+ this._constructorPoint(_args[0]);
51
+ }
52
+ else {
53
+ throw "Invalid number of arguments.";
54
+ }
55
+
56
+ },
57
+ _constructorDefault: function() {
58
+ this.x = null;
59
+ this.y = null;
60
+ },
61
+ _constructorValues: function(x, y) {
62
+ this.x = x;
63
+ this.y = y;
64
+ },
65
+ _constructorPoint: function(_point) {
66
+ this.x = _point.x;
67
+ this.y = _point.y;
68
+ },
69
+
70
+ /** = Description
71
+ * Sets the Point's x and y coordinates.
72
+ *
73
+ * = Parameters
74
+ * +x+:: The new X coordinate of the point
75
+ * +y+:: The new Y coordinate of the point
76
+ *
77
+ **/
78
+ set: function() {
79
+ var _args=arguments;
80
+
81
+ if (_args.length === 0) {
82
+ this._constructorDefault();
83
+ }
84
+ else if (_args.length === 2) {
85
+ this._constructorValues(_args[0],_args[1]);
86
+ }
87
+ else if (_args.length === 1) {
88
+ this._constructorPoint(_args[0]);
89
+ }
90
+ else {
91
+ throw "Invalid number of arguments.";
92
+ }
93
+ },
94
+
95
+ /** = Description
96
+ * Ensures that the Point lies within rect. If it's already contained in the
97
+ * rectangle, the Point is unchanged; otherwise, it's moved to the rect's
98
+ * nearest edge.
99
+ *
100
+ * = Parameters
101
+ * +_rect+:: A HRect instance to constrain to.
102
+ *
103
+ **/
104
+ constrainTo: function(_rect) {
105
+
106
+ if (this.x < _rect.left) {
107
+ this.x = _rect.left;
108
+ }
109
+ if (this.y < _rect.top) {
110
+ this.y = _rect.top;
111
+ }
112
+ if (this.x > _rect.right) {
113
+ this.x = _rect.right;
114
+ }
115
+ if (this.y > _rect.bottom) {
116
+ this.y = _rect.bottom;
117
+ }
118
+
119
+ },
120
+
121
+ /** = Description
122
+ * Creates and returns a new Point that adds the given Point and this Point
123
+ * together. The new object's x coordinate is the sum of the operands' x
124
+ * values; its y value is the sum of the operands' y values.
125
+ *
126
+ * = Parameters
127
+ * with HPoint:
128
+ * +_point+:: An HPoint to add to.
129
+ *
130
+ * with coordinates:
131
+ * +_x+:: An X-coordinate to add to.
132
+ * +_y+:: An Y-coordinate to add to.
133
+ *
134
+ * = Returns
135
+ * A new HPoint.
136
+ *
137
+ **/
138
+ add: function(_point) {
139
+ _args = arguments;
140
+ if((_args.length===1)&&(_args[0].type===this.type)){
141
+ _point = _args[0];
142
+ return new HPoint( (this.x + _point.x), (this.y + _point.y) );
143
+ }
144
+ else if(_args.length===2){
145
+ return new HPoint( (this.x + _args[0]), (this.y + _args[1]) );
146
+ } else {
147
+ return new HPoint( 0, 0 );
148
+ }
149
+ },
150
+
151
+
152
+ /** = Description
153
+ * Creates and returns a new Point that subtracts the given Point from this
154
+ * Point. The new object's x coordinate is the difference between the
155
+ * operands' x values; its y value is the difference between the operands'
156
+ * y values.
157
+ *
158
+ * = Parameters
159
+ *
160
+ * with HPoint:
161
+ * +_point+:: An HPoint to subtract from.
162
+ *
163
+ * with coordinates:
164
+ * +_x+:: An X-coordinate to subtract from.
165
+ * +_y+:: An Y-coordinate to subtract from.
166
+ *
167
+ * = Returns
168
+ * A new HPoint.
169
+ *
170
+ **/
171
+ subtract: function(){
172
+ _args = arguments;
173
+ if((_args.length===1)&&(_args[0].type===this.type)){
174
+ _point = _args[0];
175
+ return new HPoint( this.x-_point.x, this.y-_point.y );
176
+ }
177
+ else if(_args.length===2){
178
+ return new HPoint( this.x-_args[0], this.y-_args[1] );
179
+ } else {
180
+ return new HPoint( 0, 0 );
181
+ }
182
+ },
183
+
184
+
185
+ /** = Description
186
+ * Returns true if the two objects' point exactly coincide.
187
+ *
188
+ * = Parameter
189
+ * +_point+:: A HPoint to compare to.
190
+ *
191
+ * = Returns
192
+ * The result; true or false.
193
+ *
194
+ **/
195
+ equals: function(_point) {
196
+ return ( this.x === _point.x && this.y === _point.y );
197
+ }
198
+
199
+
200
+ });
201
+
202
+
File without changes
@@ -0,0 +1,610 @@
1
+ /* Riassence Framework
2
+ * Copyright 2006 Riassence Inc.
3
+ * http://riassence.com/
4
+ *
5
+ * You should have received a copy of the GNU General Public License along
6
+ * with this software package. If not, contact licensing@riassence.com
7
+ */
8
+
9
+ /*** = Description
10
+ ** A Rect object represents a rectangle. Rects are used throughout the
11
+ ** Components to define the frames of windows, views, bitmaps even the
12
+ ** screen itself. A HRect is defined by its four sides, expressed as the public
13
+ ** data members left, top, right, and bottom.
14
+ **
15
+ ** If you change a component's rect, you should call its HView.drawRect method.
16
+ **
17
+ ** = Instance Variables
18
+ ** +type+:: '[HRect]'
19
+ ** +top+:: The position of the rect's top side (from parent top)
20
+ ** +left+:: The position of the rect's left side (from parent left)
21
+ ** +bottom+:: The position of the rect's bottom side (from parent top)
22
+ ** +right+:: The position of the rect's right side (from parent left)
23
+ ** +leftTop+:: A HPoint representing the coordinate of the rect's left top corner
24
+ ** +leftBottom+:: A HPoint representing the coordinate of the rect's left bottom corner
25
+ ** +rightTop+:: A HPoint representing the coordinate of the rect's right top corner
26
+ ** +rightBottom+:: A HPoint representing the coordinate of the rect's right bottom corner
27
+ ** +width+:: The width of the rect.
28
+ ** +height+:: The height of the rect.
29
+ ***/
30
+ HRect = HClass.extend({
31
+ /** = Description
32
+ * Initializes a Rect as four sides, as two diametrically opposed corners,
33
+ * or as a copy of some other Rect object. A rectangle that's not assigned
34
+ * any initial values is invalid, until a specific assignment is made, either
35
+ * through a set() function or by setting the object's data members directly.
36
+ *
37
+ * = Parameters
38
+ * using a HRect instance:
39
+ * +rect+:: Another HRect.
40
+ *
41
+ * using two HPoint instances:
42
+ * +leftTop+:: Coordinates of the left top corner.
43
+ * +rightBottom+:: Coordinates of the right bottom corner.
44
+ *
45
+ * using separate numeric coordinates:
46
+ * +left+:: The coordinate of left side.
47
+ * +top+:: The coordinate of top side.
48
+ * +right+:: The coordinate of right side.
49
+ * +bottom+:: The coordinate of bottom side.
50
+ *
51
+ * = Usage
52
+ * var myLeftTopPoint = new HPoint(100,200);
53
+ * var myBottomRightPoint = new HPoint(300,400);
54
+ * var myRectFromOppositeCornerPoints = new HRect( myLeftTopPoint, myBottomRightPoint );
55
+ * var myRectFromSideCoordinates = new HRect(100,200,300,400);
56
+ * var myRectFromAnotherRect = new HRect( myRectFromEdgeCoordinates );
57
+ *
58
+ **/
59
+ constructor: function() {
60
+ this.type = '[HRect]';
61
+ var _args=arguments;
62
+
63
+ if (_args.length === 0) {
64
+ this._constructorDefault();
65
+ } else if (_args.length === 4) {
66
+ this._constructorSides(_args[0],_args[1],_args[2],_args[3]);
67
+ }
68
+ else if (_args.length === 2) {
69
+ this._constructorPoint(_args[0],_args[1]);
70
+ }
71
+ else if (_args.length === 1) {
72
+ if(_args[0] instanceof Array){
73
+ this._constructorSides(_args[0][0],_args[0][1],_args[0][2],_args[0][3]);
74
+ }
75
+ else{
76
+ this._constructorRect(_args[0]);
77
+ }
78
+ }
79
+ else {
80
+ throw "Invalid number of arguments.";
81
+ }
82
+ this.updateSecondaryValues();
83
+ },
84
+ _constructorDefault: function() {
85
+ this.top = 0;
86
+ this.left = 0;
87
+ this.bottom = -1;
88
+ this.right = -1;
89
+ },
90
+ _constructorSides: function(_left, _top, _right, _bottom) {
91
+ this.top = _top;
92
+ this.left = _left;
93
+ this.bottom = _bottom;
94
+ this.right = _right;
95
+ },
96
+ _constructorPoint: function(_leftTop, _rightBottom) {
97
+ this.top = _leftTop.y;
98
+ this.left = _leftTop.x;
99
+ this.bottom = _rightBottom.y;
100
+ this.right = _rightBottom.x;
101
+ },
102
+ _constructorRect: function(_rect) {
103
+ this.top = _rect.top;
104
+ this.left = _rect.left;
105
+ this.bottom = _rect.bottom;
106
+ this.right = _rect.right;
107
+ },
108
+
109
+ /** = Description
110
+ * You should call this on the instance to update secondary values, like
111
+ * width and height, if you change a primary (left/top/right/bottom) value
112
+ * straight through the property.
113
+ *
114
+ * Do not change properties other than the primaries through properties.
115
+ *
116
+ * Use the accompanied methods instead.
117
+ *
118
+ **/
119
+ updateSecondaryValues: function() {
120
+ /**
121
+ * isValid is true if the Rect's right side is greater than or equal to its left
122
+ * and its bottom is greater than or equal to its top, and false otherwise.
123
+ * An invalid rectangle can't be used to define an interface area (such as
124
+ * the frame of a view or window).
125
+ **/
126
+ this.isValid = ( this.right >= this.left && this.bottom >= this.top );
127
+
128
+ /**
129
+ *
130
+ * The Point-returning functions return the coordinates of one of the
131
+ * rectangle's four corners.
132
+ **/
133
+ this.leftTop = new HPoint(this.left, this.top);
134
+ this.leftBottom = new HPoint(this.left, this.bottom);
135
+ this.rightTop = new HPoint(this.right, this.top);
136
+ this.rightBottom = new HPoint(this.right, this.bottom);
137
+
138
+ /**
139
+ * The width and height of a Rect's rectangle, as returned through these
140
+ * properties.
141
+ **/
142
+ this.width = (this.right - this.left);
143
+ this.height = (this.bottom - this.top);
144
+ },
145
+
146
+ /** = Description
147
+ * Sets the object's rectangle by defining the coordinates of all four
148
+ * sides.
149
+ *
150
+ * The other set...() functions move one of the rectangle's corners to the
151
+ * Point argument; the other corners and sides are modified concomittantly.
152
+ *
153
+ * None of these methods prevents you from creating an invalid rectangle.
154
+ *
155
+ * = Parameters
156
+ * +_left+:: The coordinate of the left side.
157
+ * +_top+:: The coordinate of the top side.
158
+ * +_right+:: The coordinate of the right side.
159
+ * +_bottom+:: The coordinate of the bottom side.
160
+ *
161
+ **/
162
+ set: function() {
163
+ var _args=arguments;
164
+
165
+ if (_args.length === 0) {
166
+ this._constructorDefault();
167
+ } else if (_args.length === 4) {
168
+ this._constructorSides(_args[0],_args[1],_args[2],_args[3]);
169
+ }
170
+ else if (_args.length === 2) {
171
+ this._constructorPoint(_args[0],_args[1]);
172
+ }
173
+ else if (_args.length === 1) {
174
+ this._constructorRect(_args[0]);
175
+ }
176
+ else {
177
+ throw "Invalid number of arguments.";
178
+ }
179
+ this.updateSecondaryValues();
180
+ },
181
+
182
+ /** = Description
183
+ * Moves the rect's left side to a new coordinate.
184
+ *
185
+ * = Parameters
186
+ * +_left+:: The new left side coordinate (in px)
187
+ *
188
+ **/
189
+ setLeft: function(_left){
190
+ this.left = _left;
191
+ this.updateSecondaryValues();
192
+ },
193
+
194
+ /** = Description
195
+ * Moves the rect's right side to a new coordinate.
196
+ *
197
+ * = Parameters
198
+ * +_right+:: The new right side coordinate (in px)
199
+ *
200
+ **/
201
+ setRight: function(_right){
202
+ this.right = _right;
203
+ this.updateSecondaryValues();
204
+ },
205
+
206
+ /** = Description
207
+ * Moves the rect's top side to a new coordinate.
208
+ *
209
+ * = Parameters
210
+ * +_top+:: The new top side coordinate (in px)
211
+ *
212
+ **/
213
+ setTop: function(_top){
214
+ this.top = _top;
215
+ this.updateSecondaryValues();
216
+ },
217
+
218
+ /** = Description
219
+ * Moves the rect's bottom side to a new coordinate.
220
+ *
221
+ * = Parameters
222
+ * +_bottom+:: The new bottom side coordinate (in px)
223
+ *
224
+ **/
225
+ setBottom: function(_bottom){
226
+ this.bottom = _bottom;
227
+ this.updateSecondaryValues();
228
+ },
229
+
230
+ /** = Description
231
+ * Moves the rects left and top sides to a new point. Affects the position,
232
+ * width and height.
233
+ *
234
+ * = Parameters
235
+ * +_point+:: A HPoint instance to mode the sides to.
236
+ *
237
+ **/
238
+ setLeftTop: function(_point) {
239
+ this.left=_point.x;
240
+ this.top=_point.y;
241
+ this.updateSecondaryValues();
242
+ },
243
+
244
+ /** = Description
245
+ * Moves the rects left and bottom sides to a new point. Affects the left
246
+ * position, width and height.
247
+ *
248
+ * = Parameters
249
+ * +_point+:: A HPoint instance to mode the sides to.
250
+ *
251
+ **/
252
+ setLeftBottom: function(_point) {
253
+ this.left=_point.x;
254
+ this.bottom=_point.y;
255
+ this.updateSecondaryValues();
256
+ },
257
+
258
+ /** = Description
259
+ * Moves the rects right and top sides to a new point. Affects the top
260
+ * position, width and height.
261
+ *
262
+ * = Parameters
263
+ * +_point+:: A HPoint instance to mode the sides to.
264
+ *
265
+ **/
266
+ setRightTop: function(_point) {
267
+ this.right=_point.x;
268
+ this.top=_point.y;
269
+ this.updateSecondaryValues();
270
+ },
271
+
272
+ /** = Description
273
+ * Moves the rects right and bottom sides to a new point. Affects the width
274
+ * and height. Does not affect the position.
275
+ *
276
+ * = Parameters
277
+ * +_point+:: A HPoint instance to mode the sides to.
278
+ *
279
+ **/
280
+ setRightBottom: function(_point) {
281
+ this.right=_point.x;
282
+ this.bottom=_point.y;
283
+ this.updateSecondaryValues();
284
+ },
285
+
286
+ /** = Description
287
+ * Moves the rects right side to a new coordinate. Does not affect the position.
288
+ *
289
+ * = Parameters
290
+ * +_width+:: A numeric value representing the new target width of the rect.
291
+ *
292
+ **/
293
+ setWidth: function(_width){
294
+ this.right = this.left + _width;
295
+ this.updateSecondaryValues();
296
+ },
297
+
298
+ /** = Description
299
+ * Moves the rects bottom side to a new coordinate. Does not affect the position.
300
+ *
301
+ * = Parameters
302
+ * +_height+:: A numeric value representing the new target height of the rect.
303
+ *
304
+ **/
305
+ setHeight: function(_height){
306
+ this.bottom = this.top + _height;
307
+ this.updateSecondaryValues();
308
+ },
309
+
310
+ /** = Description
311
+ * Moves the rects right and bottom sides to new coordinates. Does not affect the position.
312
+ *
313
+ * = Parameters
314
+ * by separate numeric values:
315
+ * +_width+:: A numeric value representing the new target width of the rect.
316
+ * +_height+:: A numeric value representing the new target height of the rect.
317
+ *
318
+ * by HPoint used as "HSize":
319
+ * +_point.x+:: A numeric value representing the new target width of the rect.
320
+ * +_point.y+:: A numeric value representing the new target height of the rect.
321
+ *
322
+ **/
323
+ setSize: function(){
324
+ var _args=arguments;
325
+ // Using width and height:
326
+ if (_args.length === 2) {
327
+ _width = _args[0];
328
+ _height = _args[1];
329
+ }
330
+ // Using a point:
331
+ else if (_args.length === 1) {
332
+ _width = _args.x;
333
+ _height = _args.y;
334
+ }
335
+ this.right = this.left + _width;
336
+ this.bottom = this.top + _height;
337
+ this.updateSecondaryValues();
338
+ },
339
+
340
+ /** = Description
341
+ * Returns true if the Rect has any area even a corner or part
342
+ * of a side in common with rect, and false if it doesn't.
343
+ *
344
+ * = Parameters
345
+ * +_rect+:: A HRect instance to intersect this rect with
346
+ *
347
+ * = Returns
348
+ * A Boolean (true/false) depending on the result.
349
+ *
350
+ **/
351
+ intersects: function(_rect) {
352
+ return (
353
+ ((_rect.left >= this.left && _rect.left <= this.right) ||
354
+ (_rect.right >= this.left && _rect.right <= this.right)) &&
355
+ ((_rect.top >= this.top && _rect.top <= this.bottom) ||
356
+ (_rect.bottom >= this.top && _rect.bottom <= this.bottom)));
357
+ },
358
+
359
+ /** = Description
360
+ * Returns true if point or rect lies entirely within the Rect's
361
+ * rectangle (and false if not). A rectangle contains the points that lie
362
+ * along its edges; for example, two identical rectangles contain each other.
363
+ *
364
+ * Also works with HPoint instances.
365
+ *
366
+ * = Parameters
367
+ * +_obj+:: A HRect or HPoint to check the containment with.
368
+ *
369
+ * = Returns
370
+ * A Boolean (true/false) depending on the result.
371
+ *
372
+ **/
373
+ contains: function(_obj) {
374
+ if(_obj instanceof HPoint) {
375
+ return this._containsPoint(_obj);
376
+ }
377
+ else if(_obj instanceof HRect) {
378
+ return this._containsRect(_obj);
379
+ }
380
+ else {
381
+ throw "Wrong argument type.";
382
+ }
383
+ },
384
+ _containsPoint: function(_point) {
385
+ return ( _point.x >= this.left && _point.x <= this.right &&
386
+ _point.y >= this.top && _point.y <= this.bottom );
387
+ },
388
+ _containsRect: function(_rect) {
389
+ return ( _rect.left >= this.left && _rect.right <= this.right &&
390
+ _rect.top >= this.top && _rect.bottom <= this.bottom );
391
+ },
392
+
393
+ /** = Description
394
+ * Insets the sides of the Rect's rectangle by x units (left and
395
+ * right sides) and y units (top and bottom). Positive inset values shrink
396
+ * the rectangle; negative values expand it. Note that both sides of each
397
+ * pair moves the full amount. For example, if you inset a Rect by (4,4), the
398
+ * left side moves (to the right) four units and the right side moves (to the
399
+ * left) four units (and similarly with the top and bottom).
400
+ *
401
+ * = Parameters
402
+ * using a HPoint:
403
+ * +point+:: A HPoint to inset by.
404
+ *
405
+ * using separate x and y coordinates:
406
+ * +x+:: x Coordinate
407
+ * +y+:: y Coordinate
408
+ *
409
+ **/
410
+ insetBy: function() {
411
+ var _args=arguments;
412
+ if (_args.length === 1) {
413
+ this._insetByPoint(_args[0]);
414
+ } else if (_args.length === 2) {
415
+ this._insetByXY(_args[0],_args[1]);
416
+ } else {
417
+ throw "Invalid number of arguments.";
418
+ }
419
+ this.updateSecondaryValues();
420
+ },
421
+ _insetByPoint: function(_point) {
422
+ this._insetByXY(_point.x, _point.y);
423
+ },
424
+ _insetByXY: function(x, y) {
425
+ this.left += x;
426
+ this.top += y;
427
+ this.right -= x;
428
+ this.bottom -= y;
429
+ },
430
+
431
+ /** = Description
432
+ * Moves the Rect horizontally by x units and vertically by y
433
+ * units. The rectangle's size doesn't change.
434
+ *
435
+ * = Parameters
436
+ * using a HPoint:
437
+ * +point+:: A HPoint to offset by.
438
+ *
439
+ * using separate x and y coordinates
440
+ * +x+:: X coordinate
441
+ * +y+:: Y coordinate
442
+ *
443
+ **/
444
+ offsetBy: function() {
445
+ var _args=arguments;
446
+ if (_args.length === 1) {
447
+ this._offsetByPoint(_args[0]);
448
+ } else if (_args.length === 2) {
449
+ this._offsetByXY(_args[0],_args[1]);
450
+ } else {
451
+ throw "Invalid number of arguments.";
452
+ }
453
+ this.updateSecondaryValues();
454
+ },
455
+ _offsetByPoint: function(_point) {
456
+ this._offsetByXY(_point.x, _point.y);
457
+ },
458
+ _offsetByXY: function(x, y) {
459
+ this.left += x;
460
+ this.top += y;
461
+ this.right += x;
462
+ this.bottom += y;
463
+ },
464
+
465
+ /** = Description
466
+ * Moves the Rect to the location (x,y).
467
+ *
468
+ * = Parameters
469
+ * using a HPoint:
470
+ * +point+:: A HPoint to offset to.
471
+ *
472
+ * using separate x and y coordinates):
473
+ * +x+:: X coordinate
474
+ * +y+:: Y coordinate
475
+ *
476
+ **/
477
+ offsetTo: function() {
478
+ var _args=arguments;
479
+ if (_args.length === 1) {
480
+ this._offsetToPoint(_args[0]);
481
+ } else if (_args.length === 2) {
482
+ this._offsetToXY(_args[0],_args[1]);
483
+ } else {
484
+ throw "Invalid number of arguments.";
485
+ }
486
+ this.updateSecondaryValues();
487
+ },
488
+ _offsetToPoint: function(_point) {
489
+ this._offsetToXY(_point.x, _point.y);
490
+ },
491
+ _offsetToXY: function(x, y) {
492
+ this.right += x-this.left;
493
+ this.left = x;
494
+ this.bottom += y-this.top;
495
+ this.top = y;
496
+ },
497
+
498
+ /** = Description
499
+ * Returns true if the two objects' rectangles exactly coincide.
500
+ *
501
+ * = Parameters
502
+ * +_rect+:: A HRect instance to compare to.
503
+ *
504
+ * = Returns
505
+ * A Boolean (true/false) depending on the result.
506
+ *
507
+ **/
508
+ equals: function(_rect) {
509
+ return (this.left === _rect.left && this.top === _rect.top &&
510
+ this.right === _rect.right && this.bottom === _rect.bottom);
511
+ },
512
+
513
+ /** = Description
514
+ * Creates and returns a new Rect that's the intersection of this Rect and
515
+ * the specified Rect. The new Rect encloses the area that the two Rects have
516
+ * in common. If the two Rects don't intersect, the new Rect will be invalid.
517
+ *
518
+ * = Parameters
519
+ * +_rect+:: A HRect instance to compare to.
520
+ *
521
+ * = Returns
522
+ * A new HRect instance.
523
+ *
524
+ **/
525
+ intersection: function(_rect) {
526
+ return new HRect(
527
+ Math.max(this.left, _rect.left), Math.max(this.top, _rect.top),
528
+ Math.min(this.right, _rect.right), Math.min(this.bottom, _rect.bottom)
529
+ );
530
+ },
531
+
532
+ /** = Description
533
+ * Creates and returns a new Rect that minimally but completely encloses the
534
+ * area defined by this Rect and the specified Rect.
535
+ *
536
+ * = Parameters
537
+ * +_rect+:: A HRect instance to compare to.
538
+ *
539
+ * = Returns
540
+ * A new HRect instance.
541
+ *
542
+ **/
543
+ union: function(_rect) {
544
+ return new HRect(
545
+ Math.min(this.left, _rect.left), Math.min(this.top, _rect.top),
546
+ Math.max(this.right, _rect.right), Math.max(this.bottom, _rect.bottom)
547
+ );
548
+ },
549
+
550
+ // HValue and HView support
551
+ valueObj: null,
552
+ viewIds: [],
553
+
554
+ /** = Description
555
+ * Bind function
556
+ *
557
+ * = Parameters
558
+ * +_view+:: view
559
+ *
560
+ **/
561
+ bind: function(_view){
562
+ if(this.viewIds.indexOf(_view.viewId) !== -1){
563
+ this.viewIds.push( _view.viewId );
564
+ }
565
+ },
566
+
567
+ /** = Description
568
+ * Release function
569
+ **/
570
+ release: function(_view){
571
+ var _viewIdx = this.viewIds.indexOf(_view.viewId);
572
+ if(_viewIdx !== -1){
573
+ this.viewIds.splice( _viewIdx, 1 );
574
+ }
575
+ },
576
+
577
+ /** = Description
578
+ * Sets valueObj for this component given as parameter.
579
+ *
580
+ * = Parameters
581
+ * +_valueObj+:: valueObj to use
582
+ *
583
+ **/
584
+ setValueObj: function(_valueObj){
585
+ this.valueObj = _valueObj;
586
+ },
587
+
588
+ /** = Description
589
+ * setValue function
590
+ *
591
+ * = Parameters
592
+ * +_value+:: value
593
+ * +_srcViewId+:: srcViewId
594
+ *
595
+ **/
596
+ setValue: function(_value,_srcViewId){
597
+ if(this.valueObj){
598
+ this.valueObj.set(_value);
599
+ }
600
+ this.set(_value[0],_value[1],_value[2],_value[3]);
601
+ var i=0, _viewId;
602
+ for(;i<this.viewIds.length;i++){
603
+ _viewId = this.viewIds[i];
604
+ HSystem.views[_viewId].drawRect();
605
+ }
606
+ }
607
+
608
+ });
609
+
610
+