[fusion-commits] r2748 - in trunk: text widgets/QuickPlot

svn_fusion at osgeo.org svn_fusion at osgeo.org
Wed Jul 24 01:46:05 PDT 2013


Author: jng
Date: 2013-07-24 01:46:05 -0700 (Wed, 24 Jul 2013)
New Revision: 2748

Added:
   trunk/widgets/QuickPlot/GenerateLegend.php
   trunk/widgets/QuickPlot/lc_group.gif
   trunk/widgets/QuickPlot/legend-DWF.png
   trunk/widgets/QuickPlot/legend-raster.png
   trunk/widgets/QuickPlot/legend-theme.png
Modified:
   trunk/text/en
   trunk/widgets/QuickPlot/PlotAsPDF.php
   trunk/widgets/QuickPlot/QuickPlotPanel.templ
Log:
#584: Support output of the legend in PDF QuickPlot. We don't use the existing MapGuide API for this because the output from that API is just woeful so we currently render the legend ourselves via PHP/GD. If legend is specified, we shave off 250px from the width of the map image to be rendered to make way for the legend image.

Modified: trunk/text/en
===================================================================
--- trunk/text/en	2013-07-23 07:45:15 UTC (rev 2747)
+++ trunk/text/en	2013-07-24 08:46:05 UTC (rev 2748)
@@ -460,6 +460,7 @@
 QUICKPLOT_ORIENTATION_P         = Portrait Orientation
 QUICKPLOT_ORIENTATION_L         = Landscape Orientation
 QUICKPLOT_GENERATE              = Generate
+QUICKPLOT_SHOWLEGEND            = Show Legend
 QUICKPLOT_ADVANCED_OPTIONS      = Advanced options
 QUICKPLOT_PREVIEW_ERROR         = The application resources required to generate the plot exceed the settings defined by the administrator
 QUICKPLOT_RESOLUTION_WARNING    = The current settings exceed the map resolution. Zooming out or increasing the scaling will help create a more legible plot

Added: trunk/widgets/QuickPlot/GenerateLegend.php
===================================================================
--- trunk/widgets/QuickPlot/GenerateLegend.php	                        (rev 0)
+++ trunk/widgets/QuickPlot/GenerateLegend.php	2013-07-24 08:46:05 UTC (rev 2748)
@@ -0,0 +1,340 @@
+<?php
+    $fusionMGpath = '../../layers/MapGuide/php/';
+    include $fusionMGpath . 'Utilities.php';
+
+    $fusionMGpath = '../../layers/MapGuide/php/';
+    include $fusionMGpath . 'Common.php';
+
+    $sessionID = "";
+    $mapName   = "";
+    $width = 0;
+    $height = 0;
+    $iconWidth = 16;
+    $iconHeight = 16;
+    $iconFormat = "PNG"; //MgImageFormats::Png
+    
+    $groupIcon = imagecreatefromgif("lc_group.gif");
+    $dwfIcon = imagecreatefrompng("legend-DWF.png");
+    $rasterIcon = imagecreatefrompng("legend-raster.png");
+    $themeIcon = imagecreatefrompng("legend-theme.png");
+    
+    $font = "../fonts/arial.ttf";
+    $fontSizePt = 12;
+    $fontIndex = 4;
+    
+    $xPad = 4;
+    $yPad = 2;
+    $xIndent = 25;
+    $offsetX = $xPad + 10;
+    $offsetY = $yPad + 10;
+    
+    try
+    {
+        GetParameters();
+        GenerateLegend();
+    }
+    catch (MgException $e) {
+        $msg = "last error";
+        $msg .= "\nERROR: " . $e->GetExceptionMessage() . "\n";
+        $msg .= $e->GetDetails() . "\n";
+        $msg .= $e->GetStackTrace() . "\n";
+        RenderTextToImage($msg);
+    }
+    catch (Exception $ex) {
+        $msg = $ex->GetMessage();
+        RenderTextToImage($msg);
+    }
+    
+    imagedestroy($groupIcon);
+    imagedestroy($dwfIcon);
+    imagedestroy($rasterIcon);
+    imagedestroy($themeIcon);
+?>
+
+<?php    
+
+    function IsThemed($scaleRange, &$gt) {
+        $typeStyles = array("PointTypeStyle", "LineTypeStyle", "AreaTypeStyle", "CompositeTypeStyle");
+        $ruleNames = array("PointRule", "LineRule", "AreaRule", "CompositeRule");
+        $totalRules = 0;
+        for ($i = 0; $i < count($typeStyles); $i++) {
+            $styleNodes = $scaleRange->getElementsByTagName($typeStyles[$i]);
+            for ($j = 0; $j < $styleNodes->length; $j++) {
+                $ruleNodes = $styleNodes->item($j)->getElementsByTagName($ruleNames[$i]);
+                $totalRules += $ruleNodes->length;
+                if ($ruleNodes->length > 0)
+                    $gt = ($i + 1);
+            }
+        }
+        return $totalRules > 1;
+    }
+
+    function GenerateLegend()
+    {
+        global $sessionID, $mapName, $width, $height, $offsetX, $offsetY, $xPad, $yPad, $iconWidth, $iconHeight, $xIndent, $groupIcon, $fontIndex;
+        
+        $userInfo         = new MgUserInformation($sessionID);
+        $siteConnection   = new MgSiteConnection();
+        $siteConnection->Open($userInfo);
+        $resourceService  = $siteConnection->CreateService(MgServiceType::ResourceService);
+        $mappingService = $siteConnection->CreateService(MgServiceType::MappingService);
+        
+        $map = new MgMap();
+        $map->Open($resourceService, $mapName);
+        $groups = $map->GetLayerGroups();
+        $scale = $map->GetViewScale();
+        
+        $image = imagecreatetruecolor($width, $height);
+        
+        $white = imagecolorallocate($image, 255, 255, 255);
+        $black = imagecolorallocate($image, 0, 0, 0);
+        
+        imagefilledrectangle($image, 0, 0, $width, $height, $white);
+        
+        ProcessLayersForLegend($mappingService, $resourceService, $map, $scale, NULL, $image);
+        for ($i = 0; $i < $groups->GetCount(); $i++) {
+            $group = $groups->GetItem($i);
+            if (!$group->GetDisplayInLegend())
+                continue;
+            //print_r("GROUP: ".$group->GetLegendLabel()." (".$group->GetName().") - ".$group->GetObjectId()."<br/>");
+            //Draw the image
+            imagecopy($image, $groupIcon, $offsetX, $offsetY, 0, 0, $iconWidth, $iconHeight);
+            imagestring($image, $fontIndex, ($offsetX + $xPad + 16), $offsetY, $group->GetLegendLabel(), $black);
+            $offsetX += $xIndent;
+            $offsetY += $iconHeight;
+            $offsetY += $yPad;
+            if ($offsetY > $height)
+                break;
+            ProcessLayersForLegend($mappingService, $resourceService, $map, $scale, $group, $image);
+            $offsetX -= $xIndent;
+        }
+        
+        header("Content-type: image/png");
+        imagepng($image);
+        
+        //Uncomment to see what PHP-isms get spewed out that may be tripping up rendering
+        //Also replace instances of "////print_r" with "//print_r" to insta-uncomment all debugging calls
+        /*
+        ob_start();
+        imagepng($image);
+        $im = base64_encode(ob_get_contents());
+        ob_end_clean();
+        header("Content-type: text/html", true);
+        echo "<img src='data:image/png;base64,".$im."' alt='legend image'></img>";
+        */
+        
+        imagecolordeallocate($image, $white);
+        imagedestroy($image);
+    }
+
+    function ProcessLayersForLegend($mappingService, $resourceService, $map, $scale, $group, $image) {
+        global $iconWidth, $iconHeight, $height, $fontIndex, $iconFormat, $offsetX, $offsetY, $font, $fontSizePt, $xPad, $yPad, $xIndent, $themeIcon, $groupIcon, $dwfIcon, $rasterIcon;
+    
+        $black = imagecolorallocate($image, 0, 0, 0);
+        $layers = $map->GetLayers();
+        for ($i = 0; $i < $layers->GetCount(); $i++) {
+            $layer = $layers->GetItem($i);
+            if (!$layer->IsVisible() || !$layer->GetDisplayInLegend()) {
+                //print_r("[SKIP]: Skipping layer (".$layer->GetLegendLabel().") - not visible or not set to display in legend <br/>");
+                continue;
+            }
+
+            if ($offsetY > $height) {
+                //print_r("********** STOP! Past image bounds ****************<br/>");
+                break;
+            }
+
+            $parentGroup = $layer->GetGroup();
+            $bRequiredInLegend = false;
+            
+            $grpId = "";
+            $parentId = "";
+            if ($group != NULL)
+                $grpId = $group->GetObjectId();
+            if ($parentGroup != NULL)
+                $parentId = $parentGroup->GetObjectId();
+            
+            if ($group == NULL && $parentGroup == NULL)
+                $bRequiredInLegend = true;
+            else if ($parentGroup != NULL && $group != NULL && $group->GetObjectId() == $parentGroup->GetObjectId())
+                $bRequiredInLegend = true;
+            
+            if (!$bRequiredInLegend) {
+                //print_r("[SKIP]: Skipping layer (".$layer->GetLegendLabel().", group: $grpId, layer's parent: $parentId) - not required in legend <br/>");
+                continue;
+            }
+            
+            $ldfId = $layer->GetLayerDefinition();
+            $layerContent = $resourceService->GetResourceContent($ldfId);
+            $xmldoc = DOMDocument::loadXML(ByteReaderToString($layerContent));
+            $scaleRanges = $xmldoc->getElementsByTagName('VectorScaleRange');
+            if ($scaleRanges->length == 0) {
+                $scaleRanges = $xmldoc->getElementsByTagName('GridScaleRange');
+                if ($scaleRanges->length > 0) {
+                    //Draw the image
+                    imagecopy($image, $rasterIcon, $offsetX, $offsetY, 0, 0, $iconWidth, $iconHeight);
+                    
+                    //Draw the label
+                    //imagettftext($image, $fontSizePt, 0, ($offsetX + $xPad + $iconWidth), $offsetY, $black, $font, $layer->GetLegendLabel());
+                    imagestring($image, $fontIndex, ($offsetX + $xPad + $iconWidth), $offsetY, $layer->GetLegendLabel(), $black);
+                    
+                    $offsetY += $yPad;
+                    $offsetY += $iconHeight;
+                    
+                    imagecolordeallocate($image, $black);
+                    return;
+                } else {
+                    $scaleRanges = $xmldoc->getElementsByTagName('DrawingLayerDefinition');
+                    if ($scaleRanges->length > 0) {
+                        //Draw the image
+                        imagecopy($image, $dwfIcon, $offsetX, $offsetY, 0, 0, $iconWidth, $iconHeight);
+                        
+                        //Draw the label
+                        //imagettftext($image, $fontSizePt, 0, ($offsetX + $xPad + $iconWidth), $offsetY, $black, $font, $layer->GetLegendLabel());
+                        imagestring($image, $fontIndex, ($offsetX + $xPad + $iconWidth), $offsetY, $layer->GetLegendLabel(), $black);
+                        
+                        $offsetY += $yPad;
+                        $offsetY += $iconHeight;
+                        
+                        imagecolordeallocate($image, $black);
+                        return;
+                    }
+                }
+            }
+            //print_r("Processing layer (".$layer->GetLegendLabel()."). Scale range count: ".$scaleRanges->length."<br/>");
+            for ($sc = 0; $sc < $scaleRanges->length; $sc++)
+            {
+                $scaleRangeObj = NULL;
+                $scaleRangeObj->styles = array();
+                $scaleRange = $scaleRanges->item($sc);
+                $minElt = $scaleRange->getElementsByTagName('MinScale');
+                $maxElt = $scaleRange->getElementsByTagName('MaxScale');
+                $minScale = "0";
+                $maxScale = 'infinity';  // as MDF's VectorScaleRange::MAX_MAP_SCALE
+                if ($minElt->length > 0)
+                    $minScale = $minElt->item(0)->nodeValue;
+                if ($maxElt->length > 0)
+                    $maxScale = $maxElt->item(0)->nodeValue;
+                
+                //Style is within our scale
+                if (($minScale == "0" && $maxScale == "infinity") ||
+                    ($scale >= floatval($minScale) && $scale <= floatval($maxScale)) ||
+                    ($maxScale == "infinity" && $scale >= floatval($minScale))) {
+                    
+                    $styleIndex = 0;
+                    
+                    if (!IsThemed($scaleRange, $gt)) {
+                        //print_r($layer->GetLegendLabel()." - ".$ldfId->ToString()." - Un-themed layer (geomType: $gt)<br/>");
+                        $icon = $mappingService->GenerateLegendImage($ldfId, $scale, $iconWidth, $iconHeight, $iconFormat, $gt, 0);
+                        $sink = new MgByteSink($icon);
+                        $tempImage = sys_get_temp_dir() . DIRECTORY_SEPARATOR . "mgo_icon" . uniqid();
+                        $sink->ToFile($tempImage);
+                        
+                        $iconImg = imagecreatefrompng($tempImage);
+                        
+                        //Draw the image
+                        imagecopy($image, $iconImg, $offsetX, $offsetY, 0, 0, $iconWidth, $iconHeight);
+                        imagedestroy($iconImg);
+                        unlink($tempImage);
+                        
+                        //Draw the label
+                        //imagettftext($image, $fontSizePt, 0, ($offsetX + $xPad + $iconWidth), $offsetY, $black, $font, $layer->GetLegendLabel());
+                        imagestring($image, $fontIndex, ($offsetX + $xPad + $iconWidth), $offsetY, $layer->GetLegendLabel(), $black);
+                        
+                        $offsetY += $yPad;
+                        $offsetY += $iconHeight;
+                    } else {
+                        if ($scaleRange->getElementsByTagName("CompositeTypeStyle")->length > 0) {
+                            $typeStyles = array(4 => "CompositeTypeStyle");
+                            $ruleNames = array(4 => "CompositeRule");
+                        } else {
+                            $typeStyles = array(1 => "PointTypeStyle", 2 => "LineTypeStyle", 3 => "AreaTypeStyle");
+                            $ruleNames = array(1 => "PointRule", 2 => "LineRule", 3 => "AreaRule");
+                        }
+                    
+                        //print_r($layer->GetLegendLabel()." - ".$ldfId->ToString()." - Themed layer ()<br/>");
+                        //Draw the theme icon
+                        imagecopy($image, $themeIcon, $offsetX, $offsetY, 0, 0, $iconWidth, $iconHeight);
+                    
+                        //Draw the themed layer label
+                        //imagettftext($image, $fontSizePt, 0, ($offsetX + $xPad + $iconWidth), $offsetY, $black, $font, $layer->GetLegendLabel());
+                        imagestring($image, $fontIndex, ($offsetX + $xPad + $iconWidth), $offsetY, $layer->GetLegendLabel(), $black);
+                        $offsetX += $xIndent;
+                        $offsetY += $yPad;
+                        $offsetY += $iconHeight;
+                        
+                        //for($ts=0, $count = count($typeStyles); $ts < $count; $ts++)
+                        foreach ($typeStyles as $ts => $styleName)
+                        {
+                            //print_r(" - Checking $styleName ($ts)<br/>");
+                            $typeStyle = $scaleRange->getElementsByTagName($styleName);
+                            $catIndex = 0;
+                            //print_r(" -- Found ".$typeStyle->length." elements<br/>");
+                            for($st = 0; $st < $typeStyle->length; $st++) {
+
+                                $styleObj = NULL;
+                                // We will check if this typestyle is going to be shown in the legend
+                                $showInLegend = $typeStyle->item($st)->getElementsByTagName("ShowInLegend");
+                                if($showInLegend->length > 0)
+                                    if($showInLegend->item(0)->nodeValue == "false")
+                                        continue;   // This typestyle does not need to be shown in the legend
+
+                                $rules = $typeStyle->item($st)->getElementsByTagName($ruleNames[$ts]);
+                                
+                                for($r = 0; $r < $rules->length; $r++) {
+                                    $rule = $rules->item($r);
+                                    $label = $rule->getElementsByTagName("LegendLabel");
+                                    $labelText = $label->length==1? $label->item(0)->nodeValue: "";
+                                    
+                                    $icon = $mappingService->GenerateLegendImage($ldfId, $scale, $iconWidth, $iconHeight, $iconFormat, $ts, $catIndex++);
+                                    $sink = new MgByteSink($icon);
+                                    $tempImage = sys_get_temp_dir() . DIRECTORY_SEPARATOR . "mgo_icon" . uniqid();
+                                    $sink->ToFile($tempImage);
+                                    
+                                    $iconImg = imagecreatefrompng($tempImage);
+                                    
+                                    //Draw the image
+                                    imagecopy($image, $iconImg, $offsetX, $offsetY, 0, 0, $iconWidth, $iconHeight);
+                                    imagedestroy($iconImg);
+                                    unlink($tempImage);
+                                    
+                                    //Draw the label
+                                    //imagettftext($image, $fontSizePt, 0, ($offsetX + $xPad + $iconWidth), $offsetY, $black, $font, $layer->GetLegendLabel());
+                                    imagestring($image, $fontIndex, ($offsetX + $xPad + $iconWidth), $offsetY, $labelText, $black);
+                                    
+                                    $offsetY += $yPad;
+                                    $offsetY += $iconHeight;
+                                    
+                                    if ($offsetY > $height)
+                                        break;
+                                }
+                            }
+                        }
+                        $offsetX -= $xIndent;
+                    }
+                } else {
+                    //print_r("[SKIP]: Layer (".$layer->GetLegendLabel()."). Current scale ($scale) does not fit scale range [$minScale to $maxScale]<br/>");
+                }
+            }
+        }
+        
+        imagecolordeallocate($image, $black);
+    }
+
+    function GetParameters()
+    {
+        global $sessionID, $mapName, $width, $height;
+        $args = $_GET;
+        if ($_SERVER["REQUEST_METHOD"] == "POST")
+        {
+            $args = $_POST;
+        }
+        
+        // Not necessary to validate the parameters    	
+        $sessionID   = $args["session_id"];
+        $mapName     = $args["map_name"];
+        $width       = $args["width"];
+        $height      = $args["height"];
+    }
+    
+?>
\ No newline at end of file

Modified: trunk/widgets/QuickPlot/PlotAsPDF.php
===================================================================
--- trunk/widgets/QuickPlot/PlotAsPDF.php	2013-07-23 07:45:15 UTC (rev 2747)
+++ trunk/widgets/QuickPlot/PlotAsPDF.php	2013-07-24 08:46:05 UTC (rev 2748)
@@ -7,7 +7,10 @@
     $path = $_SERVER["PHP_SELF"];
     $port = $_SERVER["SERVER_PORT"];
     $generatePage = "/GeneratePicture.php?";
+    $generateLegend = "/GenerateLegend.php?";
     $pathString = implode('/',explode('/', $path,-1));
+    $showLegend = array_key_exists("ShowLegend", $_POST) && $_POST["ShowLegend"] === "on";
+    $legendWidth = 0;
 
     // POST params
     // Title
@@ -72,23 +75,41 @@
     {
         $printSize = new Size(0, 0);
     }
+    
+    // Shave off width if we have a legend
+    if ($showLegend) {
+        $legendWidth = PxToIn(250, $printDpi);
+        $printSize->width = $printSize->width - $legendWidth;
+    }
 
     // Construct the querysting which can be used to generate the Map image
-    $query_string = "session_id=".$_POST['sessionId']."&map_name=".$_POST['mapName']."&print_size=".$_POST['printSize'].
+    $query_string = "session_id=".$_POST['sessionId']."&map_name=".$_POST['mapName']."&print_size=".$printSize->width.",".$printSize->height.
                     "&print_dpi=".$_POST['dpi']."&box=".$_POST['box']."&normalized_box=".$_POST['normalizedBox'].
                     "&scale_denominator=".$_POST['scaleDenominator']."&rotation=".$_POST['rotation'];
 
+    // Construct the querystring which can be used to generate the legend
+    if ($showLegend) {
+        $legend_query_string = "session_id=".$_POST['sessionId']."&map_name=".$_POST['mapName']."&width=".InToPx($legendWidth, $printDpi)."&height=".InToPx($printSize->height, $printDpi);
+    }
+
     $filelocation = "";
+    $legendfilelocation = "";
 
     if("80" === $port)
     {
         $filelocation = $protocol.$host.$pathString.$generatePage.$query_string;
+        $legendfilelocation = $protocol.$host.$pathString.$generateLegend.$legend_query_string;
     }
     else
     {
         $filelocation = $protocol.$host.":".$port.$pathString.$generatePage.$query_string;
+        $legendfilelocation = $protocol.$host.":".$port.$pathString.$generateLegend.$legend_query_string;
     }
-
+    
+    //Uncomment to see the legend image url
+    //var_dump($legendfilelocation);
+    //die;
+    
     // Create new PDF document, the default "PDF_UNIT" value is "mm"
     $pdf = new TCPDF($orientation, PDF_UNIT, $paperType, true, "UTF-8", false);
     $font = "dejavusans";
@@ -108,8 +129,13 @@
     // Add a page
     $pdf->AddPage();
     
+    // Draw legend if specified
+    if ($showLegend) {
+        $pdf->Image($legendfilelocation, $margin[2], $margin[0], $legendWidth, $printSize->height, "PNG", "", "", false, $printDpi, "", false, false, 1, false, false, false);
+    }
+    
     // Draw Map first, so if the margin is not enough for the Text, the Text will be displayed about the image
-    $pdf->Image($filelocation, $margin[2], $margin[0], $printSize->width, $printSize->height, "PNG", "", "", false, $printDpi, "", false, false, 1, false, false, false);
+    $pdf->Image($filelocation, ($margin[2] + $legendWidth), $margin[0], $printSize->width, $printSize->height, "PNG", "", "", false, $printDpi, "", false, false, 1, false, false, false);
 
     // Draw Title
     DrawTitle();
@@ -147,6 +173,14 @@
         return doubleval($result);
     }
 
+    function InToPx($in, $dpi) {
+        return ($in * $dpi) / 25.4;
+    }
+    
+    function PxToIn($px, $dpi) {
+        return ($px * 25.4) / $dpi;
+    }
+
     //This function try to get a more elegant number for the scale bar display.
     //For example, convert 5.3 to 5, 5.5 to 6, 13 to 10, 230 to 200 and 1234 to 1200.
     //Basically no number will execced 9999 in scale bar display, however we support that situation
@@ -314,7 +348,7 @@
     
     function DrawExtentCS()
     {
-        global $pdf, $font, $margin, $printSize;
+        global $pdf, $font, $margin, $printSize, $legendWidth;
         
         if( $_POST["normalizedBox"] && trim($_POST["normalizedBox"]) != "" )
         {
@@ -336,10 +370,10 @@
 
             $pdf->SetFillColor(255, 255, 255);
 
-            $pdf->SetXY($lefttop[0], $lefttop[1], false);
+            $pdf->SetXY($lefttop[0] + $legendWidth, $lefttop[1], false);
             $pdf->Cell($lt_cellwidth, 0, $lefttop_cs, 1, 0, '', true, '', 0, false, 'T', 'M');
 
-            $pdf->SetXY($rightbuttom[0], $rightbuttom[1], false);
+            $pdf->SetXY($rightbuttom[0] + $legendWidth, $rightbuttom[1], false);
             $pdf->Cell($rb_cellwidth, 0, $rightbuttom_cs, 1, 0, '', true, '', 0, false, 'T', 'M');
         }
     }

Modified: trunk/widgets/QuickPlot/QuickPlotPanel.templ
===================================================================
--- trunk/widgets/QuickPlot/QuickPlotPanel.templ	2013-07-23 07:45:15 UTC (rev 2747)
+++ trunk/widgets/QuickPlot/QuickPlotPanel.templ	2013-07-24 08:46:05 UTC (rev 2748)
@@ -125,6 +125,17 @@
         <div class="Label">
             <table cellspacing="0" cellpadding="0">
                 <tr>
+                    <td><input type="checkbox" id="ShowLegendCheckBox" name="ShowLegend" /></td>
+                    <td><label for="ShowLegendCheckBox">__#QUICKPLOT_SHOWLEGEND#__</label></td>
+                </tr>
+            </table>
+        </div>
+        <div class="HPlaceholder5px"></div>
+        <div class="HPlaceholder5px"></div>
+        <div class="HPlaceholder5px"></div>
+        <div class="Label">
+            <table cellspacing="0" cellpadding="0">
+                <tr>
                     <td><input type="checkbox" id="AdvancedOptionsCheckBox" onclick="setAdvancedOptionsUI(this.checked)" /></td>
                     <td><label for="AdvancedOptionsCheckBox">__#QUICKPLOT_ADVANCED_OPTIONS#__</label></td>
                 </tr>

Added: trunk/widgets/QuickPlot/lc_group.gif
===================================================================
(Binary files differ)


Property changes on: trunk/widgets/QuickPlot/lc_group.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: trunk/widgets/QuickPlot/legend-DWF.png
===================================================================
(Binary files differ)


Property changes on: trunk/widgets/QuickPlot/legend-DWF.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: trunk/widgets/QuickPlot/legend-raster.png
===================================================================
(Binary files differ)


Property changes on: trunk/widgets/QuickPlot/legend-raster.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: trunk/widgets/QuickPlot/legend-theme.png
===================================================================
(Binary files differ)


Property changes on: trunk/widgets/QuickPlot/legend-theme.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream



More information about the fusion-commits mailing list