From 58e7affabc90896b21f8e99202ac4343212a413a Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Fri, 19 Nov 2010 10:43:52 +0000 Subject: [PATCH] Incluida opção para aplicar automaticamente níveis de transparência às classes de um layer no editor de legenda --- classesphp/classe_alteraclasse.php | 26 ++++++++++++++++++++++++++ classesphp/classe_legenda.php | 11 ++++++++--- classesphp/mapa_controle.php | 6 ++++-- ferramentas/legenda/index.js.php | 42 ++++++++++++++++++++++++++++++++++++++---- 4 files changed, 76 insertions(+), 9 deletions(-) diff --git a/classesphp/classe_alteraclasse.php b/classesphp/classe_alteraclasse.php index 3ee8112..fdd38d1 100644 --- a/classesphp/classe_alteraclasse.php +++ b/classesphp/classe_alteraclasse.php @@ -430,6 +430,32 @@ A nova classe será uma cópia da classe 0. return("ok"); } /* +function: adicionaopacidade + +Adiciona opacidade variável de 0 a 100 conforme o número de classes + +*/ + function adicionaopacidade() + { + //error_reporting(E_ALL); + if(!$this->layer){return "erro";} + $numclasses = $this->layer->numclasses; + $n = intval(100 / $numclasses); + for($i=0;$i<$numclasses;++$i) + { + $classe = $this->layer->getclass($i); + $numestilos = $classe->numstyles; + $o = $i * $n; + for($j=0;$j<$numestilos;++$j) + { + $estilo = $classe->getstyle($j); + $estilo->set("opacity",$o); + } + } + $this->layer->setMetaData("cache",""); + return("ok"); + } +/* function: alteraCoresClasses Altera as cores das classes existentes em um objeto layer gerando uma paleta de cores de acordo com um valor inicial e final. diff --git a/classesphp/classe_legenda.php b/classesphp/classe_legenda.php index e67e681..64412d3 100644 --- a/classesphp/classe_legenda.php +++ b/classesphp/classe_legenda.php @@ -545,6 +545,7 @@ string com o tipo do layer,id do estilo,outlinecolor,backgroundcolor,color,symbo $linha[] = corRGB($estilo->color); $linha[] = $estilo->symbolname; $linha[] = $estilo->size; + $linha[] = $estilo->opacity; $linhas[] = $tipoLayer."#".implode("#",$linha); } //retorna tipo do layer,id do estilo,outlinecolor,backgroundcolor,color,symbolname,size @@ -568,9 +569,11 @@ $color - Cor da frente. $symbolname - Nome do símbolo. -$size - Tamanho que será aplicado ao símbolo. +$size - Tamanho que será aplicado ao símbolo. + +$opacidade - Opacidade */ - function aplicaParametro($classe,$estilo,$outlinecolor,$backgroundcolor,$color,$symbolname,$size) + function aplicaParametro($classe,$estilo,$outlinecolor,$backgroundcolor,$color,$symbolname,$size,$opacidade) { if(!$this->layer){return "erro";} $classe = $this->layer->getclass($classe); @@ -597,12 +600,14 @@ $size - Tamanho que será aplicado ao símbolo. {$estilo->set("symbolname",$symbolname);} if ((isset ($size)) && ($size != "-1")) {$estilo->set("size",$size);} + if(isset($opacidade)) + {$estilo->set("opacity",$opacidade);} if ($this->layer->getmetadata("sld") != "") { $sld = $this->layer->getmetadata("sld"); reSLD($this->arquivo,$this->nome,$sld); } - $this->layer->removeMetaData("cache"); + $this->layer->setMetaData("cache",""); return "ok"; } /* diff --git a/classesphp/mapa_controle.php b/classesphp/mapa_controle.php index 87c13c7..c4ee75a 100644 --- a/classesphp/mapa_controle.php +++ b/classesphp/mapa_controle.php @@ -1378,7 +1378,9 @@ Altera uma classe de um tema, aplicando uma nova classificação ou modificando pa { $projMapa = $m->mapa->getProjection(); $m->mapa->setProjection("init=epsg:4291"); - } + } + if ($opcao == "adicionaopacidade") + {$retorno = $m->adicionaopacidade();} if ($opcao == "adicionaclasse") {$retorno = $m->adicionaclasse();} if ($opcao == "valorunico") @@ -2303,7 +2305,7 @@ Define as características de simbologia de uma classe, cria, adiciona e exclui e } if ($opcao == "aplica") { - $retorno = $m->aplicaParametro($classe,$estilo,$outlinecolor,$backgroundcolor,$color,$symbolname,$size); + $retorno = $m->aplicaParametro($classe,$estilo,$outlinecolor,$backgroundcolor,$color,$symbolname,$size,$opacidade); $m->salva(); } if ($opcao == "listaSimbolos") diff --git a/ferramentas/legenda/index.js.php b/ferramentas/legenda/index.js.php index d21ea05..e56a416 100644 --- a/ferramentas/legenda/index.js.php +++ b/ferramentas/legenda/index.js.php @@ -122,6 +122,10 @@ i3GEOF.legenda = { {onclick:{fn: i3GEOF.legenda.adicionaConta}} ); new YAHOO.widget.Button( + "i3GEOlegendabotao15", + {onclick:{fn: i3GEOF.legenda.adicionaOpacidade}} + ); + new YAHOO.widget.Button( "i3GEOlegendabotao4", {onclick:{fn: i3GEOF.legenda.paleta}} ); @@ -184,9 +188,11 @@ i3GEOF.legenda = { '
'+ '
'+ '

'+ - ' ' + - '

' + - ' ' + + ' ' + + ' ' + + '

' + + + '
' + ' ' + ' ' + ' ' + @@ -482,6 +488,30 @@ i3GEOF.legenda = { cp.call(p,"alteraclasse",i3GEOF.legenda.mostralegenda); }, /* + Function: adicionaOpacidade + + Adiciona opacidade variável em cada classe + + Veja: + + + */ + adicionaOpacidade: function(){ + var retorna = function(){ + i3GEO.atualiza(); + i3GEO.Interface.atualizaTema("",i3GEOF.legenda.tema); + i3GEO.arvoreDeCamadas.atualizaLegenda(i3GEOF.legenda.tema); + i3GEOF.legenda.aguarde.visibility = "hidden"; + i3GEOF.legenda.mostralegenda(); + }; + if(i3GEOF.legenda.aguarde.visibility === "visible") + {return;} + var p = i3GEO.configura.locaplic+"/classesphp/mapa_controle.php?g_sid="+i3GEO.configura.sid+"&funcao=alteraclasse&opcao=adicionaopacidade"+"&tema="+i3GEOF.legenda.tema+"&ext="+i3GEO.parametros.mapexten, + cp = new cpaint(); + cp.set_response_type("JSON"); + cp.call(p,"alteraclasse",retorna); + }, + /* Function: paleta Gera as cores para as classes considerando um RGB inicial e um final @@ -873,6 +903,9 @@ i3GEOF.legenda = { "" + + "" + "
de:
Tamanho:"+ $inputText("","","i3GEOlegendasizes","",12,linha[6]) + "
Opacidade:"+ + $inputText("","","i3GEOlegendaopacidade","",3,linha[7]) + + "
Símbolo:"+ $inputText("","","i3GEOlegendasymbolname","",12,linha[5]) + "
"; @@ -932,6 +965,7 @@ i3GEOF.legenda = { valido = "nao", n = simbolos.length, size = $i("i3GEOlegendasizes").value, + opacidade = $i("i3GEOlegendaopacidade").value, p,cp,fim; for (i=0;i