svn commit: r108 - trunk/mapbender/http/javascripts/mod_perimeter.php

uli at osgeo.org uli at osgeo.org
Wed Apr 19 11:38:35 EDT 2006


Author: uli
Date: 2006-04-19 15:38:34+0000
New Revision: 108

Added:
   trunk/mapbender/http/javascripts/mod_perimeter.php   (contents, props changed)

Log:
first check in
module to draw a perimeter

Added: trunk/mapbender/http/javascripts/mod_perimeter.php
Url: https://mapbender.osgeo.org/source/browse/mapbender/trunk/mapbender/http/javascripts/mod_perimeter.php?view=auto&rev=108
==============================================================================
--- (empty file)
+++ trunk/mapbender/http/javascripts/mod_perimeter.php	2006-04-19 15:38:34+0000
@@ -0,0 +1,156 @@
+<?php
+# $Id$
+# http://www.mapbender.org/index.php/Perimeter
+# Copyright (C) 2002 CCGIS 
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+require_once("../../conf/mapbender.conf");
+
+$gui_id = $_REQUEST["gui_id"];
+
+$con = db_connect($DBSERVER,$OWNER,$PW);
+db_select_db(DB,$con);
+$sql = "SELECT e_src, e_target FROM gui_element WHERE e_id = 'perimeter' AND fkey_gui_id = $1 ";
+$v = array($gui_id);
+$t = array('s');
+$res = db_prep_query($sql, $v, $t);
+$cnt = 0;
+while($row = db_fetch_array($res)){ 
+	$e_src = $row["e_src"];
+	$e_target = $row["e_target"];
+	$cnt++;
+}
+if($cnt > 1){ echo "alert('perimeter: ID not unique!');";}
+$e_id_css = 'perimeter';
+include('../include/dyn_js.php');
+?>
+
+var mod_perimeter_target = "<?php echo $e_target; ?>";
+mb_registerInitFunctions("mod_perimeter_prepare()");
+mb_registerSubFunctions("mod_perimeter_draw()");
+mb_registerPanSubElement("perimeter");
+var mod_perimeter_img_on = new Image(); mod_perimeter_img_on.src =  "<?php  echo preg_replace("/_off/","_on",$e_src);  ?>";
+var mod_perimeter_img_off = new Image(); mod_perimeter_img_off.src ="<?php  echo $e_src;  ?>";
+var mod_perimeter_img_over = new Image(); mod_perimeter_img_over.src = "<?php  echo preg_replace("/_off/","_over",$e_src);  ?>";
+var mod_perimeter_prevEvent = null;
+var mod_perimeter_x = null;
+var mod_perimeter_y = null;
+var mod_perimeter_r = null;
+var mod_perimeter_canvas = null;
+var mod_perimeter_status = 0;
+var mod_perimeter_img_obj = null;
+
+function mod_perimeter_checkDefaults(){
+	try{var t = mod_perimeter_thickness;}catch(e){mod_perimeter_thickness = 2;}
+	try{var t = mod_perimeter_color;}catch(e){mod_perimeter_color = '#000000';}
+	try{var t = mod_perimeter_text;}catch(e){mod_perimeter_text = 'Please insert a radius: ';}
+	try{var t = mod_perimeter_error;}catch(e){mod_perimeter_error = 'Invalid Input.';}
+}
+function mod_perimeter_click(o){
+	mod_perimeter_img_obj = o;
+	mod_perimeter_status = (mod_perimeter_status == 0) ? 1 : 0;
+	o.src = (mod_perimeter_status == 0) ? mod_perimeter_img_off.src : mod_perimeter_img_on.src;
+	if(mod_perimeter_status == 1){
+		mod_perimeter_saveEvents();
+	}
+	else{
+		mod_perimeter_disable();	
+	}
+}
+function mod_perimeter_saveEvents(){
+	var myE = window.frames[mod_perimeter_target].document;
+	mod_perimeter_mouseclick = myE.onclick;
+	mod_perimeter_mouseover = myE.onmouseover;
+	mod_perimeter_mousedown = myE.onmousedown;
+	mod_perimeter_mouseup = myE.onmouseup;
+	mod_perimeter_mousemove = myE.onmousemove;
+	myE.onclick = mod_perimeter_event;
+	myE.onmouseover = null;
+	myE.onmousedown = null;
+	myE.onmouseup = null;
+	myE.onmousemove = null;	
+}
+function mod_perimeter_restoreEvents(){
+	var myE = window.frames[mod_perimeter_target].document;
+	myE.onclick = mod_perimeter_mouseclick;
+	myE.onmouseover = mod_perimeter_mouseover;
+	myE.onmousedown = mod_perimeter_mousedown;
+	myE.onmouseup = mod_perimeter_mouseup;
+	myE.onmousemove = mod_perimeter_mousemove;
+}
+function mod_perimeter_over(o){
+	o.src = mod_perimeter_img_over.src;
+}
+function mod_perimeter_out(o){
+	o.src = (mod_perimeter_status == 0) ? mod_perimeter_img_off.src : mod_perimeter_img_on.src;
+}
+function mod_perimeter_disable(){
+	window.frames[mod_perimeter_target].document.getElementById("perimeter").innerHTML = '';
+}
+function mod_perimeter_event(e){
+	if(ie){
+		clickX = window.frames[mod_perimeter_target].event.clientX;
+		clickY = window.frames[mod_perimeter_target].event.clientY;
+	}
+	else{
+		clickX = e.pageX;
+		clickY = e.pageY;
+	}
+	var pos = makeClickPos2RealWorldPos(mod_perimeter_target, clickX, clickY)
+	mod_perimeter_x = pos[0];
+	mod_perimeter_y = pos[1];
+	var units = prompt(mod_perimeter_text);
+	var myUnits = mod_perimeter_validate(units);
+	if(myUnits != false){
+		mod_perimeter_r = myUnits;
+		mod_perimeter_draw();
+	}
+	else{
+		mod_perimeter_click(mod_perimeter_img_obj);	
+	}
+	mod_perimeter_restoreEvents();
+}
+function mod_perimeter_validate(u){
+	if(isNaN(u) == true){
+  		alert(mod_perimeter_error);
+  		return false;
+ 	}
+ 	else{
+		return parseInt(u);
+ 	}
+}
+function mod_perimeter_prepare(){
+	cw_opacity=1;
+	mod_perimeter_checkDefaults();	
+	var attributes = new Array();
+	attributes[0] = new Array();
+	attributes[0][0] = "style";
+	attributes[0][1] = "position:absolute; top:0px; left:0px; z-index:100; font-size:10px;"; 
+	var node = mb_checkTag(mod_perimeter_target, "div", "perimeter", "body", attributes);
+	mod_perimeter_canvas = new jsGraphics("perimeter", window.frames[mod_perimeter_target]);
+	mod_perimeter_canvas.setStroke(mod_perimeter_thickness);
+	mod_perimeter_canvas.setColor(mod_perimeter_color);
+}
+function mod_perimeter_draw(){
+	if(mod_perimeter_status == 1){
+		mod_perimeter_disable();
+		var posCenter = makeRealWorld2mapPos(mod_perimeter_target,mod_perimeter_x, mod_perimeter_y);
+		var posRadius = makeRealWorld2mapPos(mod_perimeter_target,(mod_perimeter_x + mod_perimeter_r), mod_perimeter_y);
+		var pxRadius =  posRadius[0] - posCenter[0];
+		mod_perimeter_canvas.drawEllipse((posCenter[0]-pxRadius), (posCenter[1]-pxRadius), pxRadius*2, pxRadius*2);
+		mod_perimeter_canvas.paint();
+	}
+}
\ No newline at end of file




More information about the Mapbender_commits mailing list