Mercurial > hg > digilib
comparison client/digitallibrary/greyskin/baselib.js @ 408:25d5927f6919
new rectangle methods;
removed resetParameters()
author | hertzhaft |
---|---|
date | Tue, 20 Dec 2005 17:30:55 +0100 |
parents | 8b9b4513cd64 |
children | 54774d7efb10 |
comparison
equal
deleted
inserted
replaced
407:21540fe26235 | 408:25d5927f6919 |
---|---|
139 Rectangle.prototype.getArea = function() { | 139 Rectangle.prototype.getArea = function() { |
140 // returns the area of this Rectangle | 140 // returns the area of this Rectangle |
141 return (this.width * this.height); | 141 return (this.width * this.height); |
142 } | 142 } |
143 Rectangle.prototype.containsPosition = function(pos) { | 143 Rectangle.prototype.containsPosition = function(pos) { |
144 // returns if the given Position lies in this Rectangle | 144 // returns if Position "pos" lies inside of this rectangle |
145 return ((pos.x >= this.x)&&(pos.y >= this.y)&&(pos.x <= this.x+this.width)&&(pos.y <= this.y+this.width)); | 145 return ((pos.x >= this.x) |
146 && (pos.y >= this.y) | |
147 && (pos.x <= this.x + this.width) | |
148 && (pos.y <= this.y + this.width) | |
149 ); | |
150 } | |
151 Rectangle.prototype.containsRect = function(rect) { | |
152 // returns if rectangle "rect" is contained in this rectangle | |
153 return (this.containsPosition(rect) | |
154 && this.containsPosition(new Position( | |
155 rect.x + rect.width, | |
156 rect.y + rect.height | |
157 ))); | |
158 } | |
159 Rectangle.prototype.stayInside = function(rect) { | |
160 // changes this rectangle's x/y values so it stays inside of rectangle rect | |
161 if (this.x < rect.x) this.x = rect.x; | |
162 if (this.y < rect.y) this.y = rect.y; | |
163 if (this.x + this.width > rect.x + rect.width) | |
164 this.x = rect.x + rect.width - this.width; | |
165 if (this.y + this.height > rect.y + rect.height) | |
166 this.y = rect.y + rect.height - this.height; | |
167 return this; | |
146 } | 168 } |
147 Rectangle.prototype.intersect = function(rect) { | 169 Rectangle.prototype.intersect = function(rect) { |
148 // returns the intersection of the given Rectangle and this one | 170 // returns the intersection of the given Rectangle and this one |
171 // FIX ME: not really, it should return null if there is no overlap | |
149 var sec = rect.copy(); | 172 var sec = rect.copy(); |
150 if (sec.x < this.x) { | 173 if (sec.x < this.x) { |
151 sec.width = sec.width - (this.x - sec.x); | 174 sec.width = sec.width - (this.x - sec.x); |
152 sec.x = this.x; | 175 sec.x = this.x; |
153 } | 176 } |
270 dlParams[name].value = defaultValue; | 293 dlParams[name].value = defaultValue; |
271 dlParams[name].detail = detail; | 294 dlParams[name].detail = detail; |
272 return dlParams[name]; | 295 return dlParams[name]; |
273 } | 296 } |
274 | 297 |
298 function resetParameter(name) { | |
299 // resets the given parameter to its default value | |
300 if (!defined(dlParams[name])) { | |
301 alert("Could not reset non-existing parameter '" + name + "'"); | |
302 return false; | |
303 } | |
304 dlParams[name].hasValue = false; | |
305 dlParams[name].value = defaultValue; | |
306 return dlParams[name]; | |
307 } | |
308 | |
309 function deleteParameter(name) { | |
310 // create a new parameter with a name and a default value | |
311 if (!defined(dlParams[name])) return false; | |
312 delete dlParams[name]; | |
313 return true; | |
314 } | |
315 | |
275 function getParameter(name) { | 316 function getParameter(name) { |
276 // returns the named parameter value or its default value | 317 // returns the named parameter value or its default value |
277 if (!defined(dlParams[name])) return null; | 318 if (!defined(dlParams[name])) return null; |
278 if (dlParams[name].hasValue) | 319 if (dlParams[name].hasValue) |
279 return dlParams[name].value; | 320 return dlParams[name].value; |
280 else | 321 else |
281 return dlParams[name].defaultValue; | 322 return dlParams[name].defaultValue; |
282 } | 323 } |
283 | 324 |
284 function setParameter(name, value, relative) { | 325 function setParameter(name, value, relative) { |
285 // sets parameter value (relative values with +/- unless literal) | 326 // sets parameter value (relative values with +/- unless literal) |
286 if (!defined(dlParams[name])) return null; | 327 if (!defined(dlParams[name])) return null; |
287 var p = dlParams[name]; | 328 var p = dlParams[name]; |
288 if (relative && value.slice) { | 329 if (relative && value.slice) { |
289 var sign = value.slice(0, 1); | 330 var sign = value.slice(0, 1); |
290 if (sign == '+') { | 331 if (sign == '+') { |
291 p.value = parseFloat(p.value) + parseFloat(value.slice(1)); | 332 p.value = parseFloat(p.value) + parseFloat(value.slice(1)); |
292 } else if (sign == '-') { | 333 } else if (sign == '-') { |
293 p.value = parseFloat(p.value) - parseFloat(value.slice(1)); | 334 p.value = parseFloat(p.value) - parseFloat(value.slice(1)); |
294 } else { | 335 } else { |
295 p.value = value; | 336 p.value = value; |
296 } | 337 } |
297 } else p.value = value; | 338 } else p.value = value; |
298 p.hasValue = true; | 339 p.hasValue = true; |
299 return p.value; | 340 return p.value; |
300 } | 341 } |
301 | 342 |
302 function hasParameter(name) { | 343 function hasParameter(name) { |
303 // returns if the parameter's value has been set | 344 // returns if the parameter's value has been set |
304 if (!defined(dlParams[name])) return null; | 345 if (!defined(dlParams[name])) return null; |
305 return dlParams[name].hasValue; | 346 return dlParams[name].hasValue; |
306 } | 347 } |
307 | 348 |
308 function getAllParameters(detail) { | 349 function getAllParameters(detail) { |
309 // returns a string of all parameters in query format | 350 // returns a string of all parameters in query format |
310 if (! detail) { | 351 if (! detail) { |
311 detail = 255; | 352 detail = 255; |
331 setParameter(keyval[0], keyval[1]); | 372 setParameter(keyval[0], keyval[1]); |
332 } | 373 } |
333 } | 374 } |
334 } | 375 } |
335 | 376 |
336 function resetParameters() { | |
337 // reset parameters to initial values | |
338 newParameter('fn', '', 1); | |
339 newParameter('pn', '1', 1); | |
340 newParameter('ws', '1.0', 1); | |
341 newParameter('mo', '', 1); | |
342 newParameter('mk', '', 3); | |
343 newParameter('wx', '0.0', 2); | |
344 newParameter('wy', '0.0', 2); | |
345 newParameter('ww', '1.0', 2); | |
346 newParameter('wh', '1.0', 2); | |
347 newParameter('pt', '<%= dlRequest.getAsString("pt") %>', 1); | |
348 newParameter('brgt', '0.0', 1); | |
349 newParameter('cont', '0.0', 1); | |
350 newParameter('rot', '0.0', 1); | |
351 newParameter('rgba', '', 1); | |
352 newParameter('rgbm', '', 1); | |
353 newParameter('ddpix', '', 1); | |
354 newParameter('ddpiy', '', 1); | |
355 } | |
356 | |
357 getQueryString = getAllParameters; | 377 getQueryString = getAllParameters; |
358 | 378 |
359 /* ********************************************** | 379 /* ********************************************** |
360 * HTML/DOM routines | 380 * HTML/DOM routines |
361 * ******************************************** */ | 381 * ******************************************** */ |
439 return new Size(getInt(width), getInt(height)); | 459 return new Size(getInt(width), getInt(height)); |
440 } | 460 } |
441 | 461 |
442 function getElementRect(elem) { | 462 function getElementRect(elem) { |
443 // returns a Rectangle with the size and position of the element | 463 // returns a Rectangle with the size and position of the element |
464 // FIX ME: what about borders? | |
444 var pos = getElementPosition(elem); | 465 var pos = getElementPosition(elem); |
445 var size = getElementSize(elem); | 466 var size = getElementSize(elem); |
446 return new Rectangle(pos.x, pos.y, size.width, size.height); | 467 return new Rectangle(pos.x, pos.y, size.width, size.height); |
447 } | 468 } |
448 | 469 |
515 } | 536 } |
516 return new Position(x, y); | 537 return new Position(x, y); |
517 } | 538 } |
518 | 539 |
519 function registerEvent(type, elem, handler) { | 540 function registerEvent(type, elem, handler) { |
520 // register the given event handler on the indicated element | 541 // register the given event handler on the indicated element |
521 if (elem.addEventListener) { | 542 if (elem.addEventListener) { |
522 elem.addEventListener(type, handler, false); // bubble | 543 elem.addEventListener(type, handler, false); // bubble |
523 } | 544 } |
524 else if (elem.attachEvent) { | 545 else if (elem.attachEvent) { |
525 elem.attachEvent("on" + type, handler); | 546 elem.attachEvent("on" + type, handler); |
526 } | 547 } |
527 else if (elem.captureEvents) { | 548 else if (elem.captureEvents) { |
528 if (Event) { | 549 if (Event) { |
529 t = type.toUpperCase(); | 550 t = type.toUpperCase(); |
530 elem.captureEvents(Event[t]); | 551 elem.captureEvents(Event[t]); |
531 elem[ "on" + t ] = handler; | 552 elem[ "on" + t ] = handler; |
532 } | 553 } |
533 } | 554 } |
534 else { | 555 else { |
535 alert("Could not register event of type " + type); | 556 alert("Could not register event of type " + type); |
536 return false; | 557 return false; |
537 } | 558 } |
538 return true; | 559 return true; |
539 } | 560 } |
540 | 561 |
541 function unregisterEvent(type, elem, handler) { | 562 function unregisterEvent(type, elem, handler) { |
542 // unregister the given event handler from the indicated element | 563 // unregister the given event handler from the indicated element |
543 if (elem.removeEventListener) { | 564 if (elem.removeEventListener) { |
544 elem.removeEventListener(type, handler, false); | 565 elem.removeEventListener(type, handler, false); |
545 } | 566 } |
546 else if (elem.detachEvent) { | 567 else if (elem.detachEvent) { |
547 elem.detachEvent('on' + type, handler); | 568 elem.detachEvent('on' + type, handler); |
548 } | 569 } |
549 else if (elem.releaseEvents) { | 570 else if (elem.releaseEvents) { |
550 if (Event) { | 571 if (Event) { |
551 t = type.toUpperCase(); | 572 t = type.toUpperCase(); |
552 elem.releaseEvents(Event[t]); | 573 elem.releaseEvents(Event[t]); |
553 elem[ "on" + t ] = null; | 574 elem[ "on" + t ] = null; |
554 } | 575 } |
555 } | 576 } |
556 else { | 577 else { |
557 alert("Could not register event of type " + type); | 578 alert("Could not register event of type " + type); |
558 return false; | 579 return false; |
559 } | 580 } |
560 return true; | 581 return true; |
561 } | 582 } |
562 | 583 |
563 function registerEventById(type, id, handler) { | 584 function registerEventById(type, id, handler) { |
564 registerEvent(type, document.getElementById(id), handler); | 585 registerEvent(type, document.getElementById(id), handler); |
565 } | 586 } |
566 | 587 |
567 function unregisterEventById(type, id, handler) { | 588 function unregisterEventById(type, id, handler) { |
568 unregisterEvent(type, document.getElementById(id), handler); | 589 unregisterEvent(type, document.getElementById(id), handler); |
569 } | 590 } |
570 | 591 |
571 function stopEvent(e) { | 592 function stopEvent(e) { |
572 if (!e) var e = window.event; | 593 if (!e) var e = window.event; |
573 e.cancelBubble = true; | 594 e.cancelBubble = true; |
574 if (e.stopPropagation) e.stopPropagation(); | 595 if (e.stopPropagation) e.stopPropagation(); |
575 return false; | 596 return false; |
576 } | 597 } |
577 | 598 |
578 function getEventSrc(e) { | 599 function getEventSrc(e) { |
579 if (e.target) return e.target; | 600 if (e.target) return e.target; |
580 if (e.srcElement) return e.srcElement; | 601 if (e.srcElement) return e.srcElement; |
581 } | 602 } |
582 | 603 |
583 // old registerXXYY API for compatibility | 604 // old registerXXYY API for compatibility |
584 function registerMouseDown(elem, handler) { | 605 function registerMouseDown(elem, handler) { |
585 return registerEvent("mousedown", elem, handler); | 606 return registerEvent("mousedown", elem, handler); |