Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Auxiliary symbol properties #2136

Draft
wants to merge 3 commits into
base: master
Choose a base branch
from

Conversation

dl3sdo
Copy link
Member

@dl3sdo dl3sdo commented Mar 18, 2023

Mapper sometimes needs to handle symbol properties that are not part of Mapper's own set of symbol properties and that need to be applied when importing objects.
Example: horizontal and vertical text alignment is a symbol property in OACD but an object property in Mapper.
Mapper uses auxiliary data structures to temporary store those symbol properties for later applying them on object import.
This change adds a QVariantHash element to the Symbol base class that allows a flexible and type safe storage of auxiliary symbol properties.
These auxiliary symbol properties are neither saved to a map file nor loaded from it.

The second commit applies the auxiliary symbol properties to the DXF import where text object properties like the text itself, alignment and rotation were previously imported by putting them into a string and transporting the string via the description property of the related text symbol.
Besides being an awkward design the approach suffers from multiple deficiencies: the auxiliary string was not removed from the description field, the rotation angle was rounded (e.g., -17.2 became 20) and the way of constructing and parsing the string was unnecessary complex.
Note that this commit replaces #2135.

The third commit applies the auxiliary symbol properties to the import of OCAD maps.
Auxiliary symbol properties are replacing the text_halign_map and text_valign_map hashes that were used to store OCAD's symbol properties for horizontal and vertical text alignment for being applied later to text object import.

This PR is a POC to demonstrate a possible way of preserving symbol/object related properties until object creation.

Auxiliary symbol properties could be considered with respect to #2082 and #1639.

Mapper sometimes needs to handle symbol properties that are not part of
Mapper's own set of symbol properties and that need to be applied when
importing objects.
Example: horizontal and vertical text alignment is a symbol property in
OACD but an object property in Mapper.
Mapper uses auxiliary data structures to temporary store those symbol
properties for later applying them on object import.
This change adds a QVariantHash element to the Symbol base class that
allows a flexible and type safe storage of auxiliary symbol properties.
These auxiliary symbol properties are neither saved to a map file nor
loaded from it.
Text object properties like the text itsef, alignment and rotation were
previously imported by putting them into a string and transporting the
string via the description property of the related text symbol.
Besides being an awkward design the approach suffers from multiple
deficiencies: the auxiliary string was not removed from the description
field, the rotation angle was rounded (e.g., -17.2 became 20) and the
way of constructing and parsing the string was unnecessary complex.

This commit uses the auxiliary symbol properties to transport the
object properties.
Auxiliary symbol properties are replacing the text_halign_map and
text_valign_map hashes that were used to store OCAD's symbol properties
for horizontal and vertical text alignment for being applied later to
text object import.
@dl3sdo dl3sdo marked this pull request as draft March 18, 2023 21:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant