Open tbonfort opened 12 years ago
Author: hobu Date: 2007/05/21 - 19:09 68b6f41c634b25598b67aec59ce36c0e9b6f2e3b (r6126)
Author: assefa Date: 2007/06/27 - 22:46 Steve,
Couple of points :
1) Can you describe a bit what the set/remove bindings should do ? looking into this we could have a mapscript function that cold look like this $style->setBinding(MS_STYLE_BINDING_COLOR, "attribute_field") There could either be 2 functions in maputil.c one for style, one for label which would essantally do something like : msSetBindingStyle( MS_STYLE_BINDING_ENUM, field)
if (style->bindings[MS_STYLE_BINDING_COLOR].item) { free(style->bindings[MS_STYLE_BINDING_COLOR].item) style->numbindings--; } style->bindings[MS_STYLE_BINDING_COLOR].item = strdup('field') style->numbindings++;
removeBinding can also be done the same way, either having a separate function in maputil or using msSetBindingStyle with a NULL,
Could this work ?
2) Is ther a possiblity to add the FONT parameter for binding ?
In both cases, I am will to add it and test with php mapscript since I need to use it for a client side tool.
Thanks
Author: assefa Date: 2007/06/27 - 23:29 Another point I forgot : how would the save through mapscript work ? In my opinion, It would make sense to save the attribute bindings. Right now the it saves the last values that were using while rendering.
Author: sdlime Date: 2007/06/28 - 06:49 Replying to [comment:7 assefa]:
Steve,
Couple of points :
1) Can you describe a bit what the set/remove bindings should do ? looking into this we could have a mapscript function that cold look like this $style->setBinding(MS_STYLE_BINDING_COLOR, "attribute_field") There could either be 2 functions in maputil.c one for style, one for label which would essantally do something like : msSetBindingStyle( MS_STYLE_BINDING_ENUM, field)
if (style->bindings[MS_STYLE_BINDING_COLOR].item) { free(style->bindings[MS_STYLE_BINDING_COLOR].item) style->numbindings--; } style->bindings[MS_STYLE_BINDING_COLOR].item = strdup('field') style->numbindings++;
removeBinding can also be done the same way, either having a separate function in maputil or using msSetBindingStyle with a NULL,
Could this work ?
Yes, that's all I was thinking. I was going to write them as helper methods in the swig interface files, so in style.i you'd see:
int addBinding(int binding, char *item) { if(!item) return MS_FAILURE; if(binding < 0 || binding >= MS_STYLE_BINDING_LENGTH) return MS_FAILURE;
if(this->bindings[binding].item) { free(this->bindings[binding].item) this->bindings[binding].index = -1; this->numbindings--; }
this->bindings[bindings].item = strdup(item); this->numbindings++;
return MS_SUCCESS; }
int removeBinding(int binding) { if(binding < 0 || binding >= MS_STYLE_BINDING_LENGTH) return MS_FAILURE;
if(this->bindings[binding].item) { free(this->bindings[binding].item) this->bindings[binding].index = -1; this->numbindings--; }
return MS_SUCCESS; }
I hadn't planned on writing C functions to do it although we could. We'd need a seperate set/remove function for labels and styles unless we did something like:
int msSetBinding(void obj, int binding, char item, int max_bindings)
Would have to pass the MS_LABEL_BINDING_LENGTH or MS_STYLE_BINDING_LENGTH for max_bindings, or just ignore that test altogether (a bad idea I think).
The one problem I see is guaranteeing that the binding item index gets populated, which happens via msLayerWhichItems() at draw time. We'll see I guess.
2) Is ther a possiblity to add the FONT parameter for binding ?
Yes, assuming you're talking font name (e.g. arial). I can do that for you if you wish. It's not hard but there are like 3 places you have to touch.
In both cases, I am will to add it and test with php mapscript since I need to use it for a client side tool.
Thanks
Author: sdlime Date: 2007/06/28 - 06:51 Replying to [comment:8 assefa]:
Another point I forgot : how would the save through mapscript work ? In my opinion, It would make sense to save the attribute bindings. Right now the it saves the last values that were using while rendering.
Whoops, forgot to fix the writers to check for a binding. Will add to the todo in the main description.
Author: assefa Date: 2007/06/28 - 07:06 I think we can add the addBinding (or is it setBinding ??) and removeBinding at the mapscript level as you descibed it. I will add the php methods on both style and label adn do the tests.
as for the Font : yes I meant the font name and yes you can add it :)
I have also locally modified mapfile.c to save the bindings when the map file is written (writeStyle and writeLabel functions). It looks something like : if(style->numbindings > 0 && style->bindings[MS_STYLE_BINDING_ANGLE].item) fprintf(stream, " ANGLE [%s]\n", style->bindings[MS_STYLE_BINDING_ANGLE].item); else if(style->angle != 0) fprintf(stream, " ANGLE %g\n", style->angle);
It seems to work and I would like to commit if you agree. I will also add the FONT saving when you are done binding the FONT.
Thanks
Author: assefa Date: 2007/06/29 - 14:25 commited update write functions in mapfile.c to look for a binding 9e8e3fe5b60c1f523ddecea37dc28673d322ae33 (r6248)
Author: assefa Date: 2007/06/29 - 21:28 Added setbinding and removebinding functions in phpmapscript on label and style objects (3a492529b7e05b5d93699f09593b4fbf20297115 (r6251))
Author: sdlime Date: 2007/07/11 - 05:36 Added setBinding and removeBinding methods to mapscript (SWIG).
Author: dmorissette Date: 2007/07/12 - 16:20 FYI I have added missing MS_LABEL_BINDING_FONT and MS_LABEL_BINDING_PRIORITY constants in PHP MapScript in 73c3c3e5087b119a3ea7e2790cf7f23a5de6db0d (r6296)
Author: tomkralidis Date: 2007/09/12 - 15:07
Should this be reassigned to Jeff?
Author: jmckenna
Date: 2008/07/17 - 18:26
Am I correct that for this ticket several existing parameters such as ANGLEITEM were totally removed, causing existing mapfiles with those parameters to break? I assumed both ways would still exist, but the docs would state "deprecated" for the old parameters.
If I am correct, then I will open a new ticket to add the old parameters back into the code.
Author: jmckenna Date: 2008/07/17 - 21:10
Reporter: sdlime Date: 2007/05/21 - 19:01 This bug will be used to track the implementation of the RFC 19 [http://mapserver.gis.umn.edu/development/rfc/ms-rfc-19/] implementation.
As of the creation of this bug an initial implementation has been checked in to the main trunk. It supports:
The main remaining tasks are: