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);