<div dir="ltr"><div>I don't think we're missing anything. There are general set/get methods already for a colorObj - just two flavors since you can specify colors in two ways (tuple and hex). It seems like that should be sufficient and we wouldn't want to pollute the interface adding colorObj get/set methods everywhere. I whipped up a similar script in Perl MapScript and it behaves as expected:</div><div><br></div><div>#!/usr/bin/perl<br><br>use mapscript74;<br><br>my $style = new mapscript74::styleObj();<br><br></div><div>$style->updateFromString("STYLE COLOR  1 2 3 END");<br>print "$style->{color}->{red} $style->{color}->{green} $style->{color}->{blue} $style->{color}->{alpha}\n";<br><br></div><div>$style->{color}->setRGB(100, 150, 200);<br>print "$style->{color}->{red} $style->{color}->{green} $style->{color}->{blue} $style->{color}->{alpha}\n";<br><br></div><div>$style->{color}->setHex('#FF00007F');<br>print "$style->{color}->{red} $style->{color}->{green} $style->{color}->{blue} $style->{color}->{alpha}\n";<br><br></div><div>print $style->convertToString() ."\n";<br></div><div><br></div><div>Which outputs:</div><div><br></div><div>1 2 3 255<br>100 150 200 255<br>255 0 0 127<br>STYLE<br>  COLOR "#ff00007f"<br>END # STYLE<br></div><div><br></div><div>There must be something else going on. Are you referring to master? (I can still do something like "$style->{color}->{red} = 128;" in 7.4)</div><div><br></div><div>--Steve</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Dec 22, 2019 at 8:41 AM Seth G <<a href="mailto:sethg@geographika.co.uk">sethg@geographika.co.uk</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi all,<br>
<br>
A general mapscript question I'm hoping someone can provide some information on. <br>
Should any attribute that is a C class be read-only in SWIG, and requires getters/setters to update?<br>
<br>
For example the styleObj attributes [1] includes a color property that is of type colorObj. This can be set in MapScript, but I believe this causes undefined behaviour, and any property that is not a basic int/str/float type will need a setter function added in the SWIG interface files. <br>
<br>
For example the following Python script runs without crashing, however when output back to a Mapfile contains strange results:<br>
<br>
    import mapscript<br>
<br>
    style = mapscript.styleObj()<br>
<br>
    style.updateFromString("""<br>
    STYLE<br>
        COLOR  1 2 3<br>
    END # STYLE<br>
    """)<br>
<br>
    success = style.color.setRGB(100, 150, 200)<br>
    # the following asserts all pass<br>
    assert success == mapscript.MS_SUCCESS<br>
<br>
    assert style.color.red == 100<br>
    assert style.color.green == 150<br>
    assert style.color.blue == 200<br>
    assert style.color.alpha == 255<br>
<br>
    print(style.convertToString())<br>
<br>
<br>
Outputs the following:<br>
<br>
STYLE<br>
  COLOR 200 255 3<br>
END # STYLE<br>
<br>
Note the blue value has become red, the alpha green, and I don't know where the 3 comes from. <br>
<br>
I'm guessing the setter function for the styleObj color needs to be added?<br>
<br>
Seth<br>
<br>
[1] <a href="https://mapserver.org/mapscript/mapscript.html#styleobj-attributes" rel="noreferrer" target="_blank">https://mapserver.org/mapscript/mapscript.html#styleobj-attributes</a><br>
<br>
--<br>
web:<a href="http://geographika.co.uk" rel="noreferrer" target="_blank">http://geographika.co.uk</a><br>
twitter: @geographika<br>
_______________________________________________<br>
mapserver-dev mailing list<br>
<a href="mailto:mapserver-dev@lists.osgeo.org" target="_blank">mapserver-dev@lists.osgeo.org</a><br>
<a href="https://lists.osgeo.org/mailman/listinfo/mapserver-dev" rel="noreferrer" target="_blank">https://lists.osgeo.org/mailman/listinfo/mapserver-dev</a></blockquote></div>