Jump to content

Recommended Posts

Posted

Styles, that sync have been requested many times.
I would like to propose: Let's not just do Styles, but let's have structured Symbol-like "Components".

Why? A Style may apply to one individual layer or object at a time,
but what if we want something more versatile? What if the graphics objects we're working with, are actually more like components?

For example: a keyboard button with text or icon on it and a glow-effect behind the button.

image.png.ad1c37f2fb19aebec298f25486339824.png

Wouldn't it be nice to have this as a sort of template, on which the text / icon can be customized, but the style remains in sync?

The layer composition may look like this:

  • Button
    • Icon
      • Icon Effect
        • <Icon / Text>
    • Button
      • Button Effect
        • Button Object (Symbol 1)
    • Background
      • Background Effect
        • Background Object (Symbol 1)

… Now if we saved this entire structure as a Symbol, all instances would be the same,
but what if we had it as a Component with "slots", that can be filled with different <objects>, while the rest of the component remains in sync?

I'd say, this would be so much more powerful than Styles and Symbols on their own.
This would make Styles unnecessary, as it would allow to use Components as styles, in their simplest form:
a styled layer of a single object slot, that also has all the styling one needs applied.

Does this have to be named Components? No, it could also be called "Pattern", or "Structure" or "Class" — like classes in object-oriented programming languages … or something else. 🙂

Posted

Not even remotely accurate.

"Symbols with slots" seems fine - and I may have even suggested something similar in the past as I had thought of it in the context of picture frames - but that is 100% irrelevant to styles.  Styles are intended to work across *DIFFERENT* types of items, which may not be related in the way that symbols are.

Adding "slots" to symbols would not invalidate the need for styles.

And no, the Affinity products do not really have object "styles" right now - they have object property presets which are misnamed as styles.

Posted

I wouldn't mind not being able to apply a "style" to an object,
if I could (conversely) nest that same arbitrary object within a component, to achieve the same thing.

Actually, if that component only had a single slot, it could be applied to any object just like a style. It would be the same thing.

The benefit of a component would be the capability of re-using the same slot multiple times within the same component (see Symbol 1 in above example), — and additionally: embedded within a component structure.

Posted
4 minutes ago, Viktor CR said:

nest that same arbitrary object within a component, to achieve the same thing.

How would that accomplish the same thing?

Posted

OK, I see where you are going with that.  That might be functionally equivalent, but I don't think the majority of users would be happy with it exactly as presented as being a substitute for a proper implementation of styles.

 

In order to create a style, in theory, users should be able to select an arbitrary object which is styled the way they want it, and create a style from the object.

To apply a style, they could select it from a styles palette and it would apply directly to the object, without creating extra overhead in the form of containing objects within the Layers panel.  Some users are fussy about the way their layers are managed.  If you had a named layer and wrapped it with one of these "components", the name would follow the object into the component, meaning the component itself would most likely not appropriately inherit the name of the contained object, and this could impact users' layer organizations.

In having the properties applied to a slot object, the user would need to create a slot object, style it the way they want, embed it into a component, and create a component instance to add their existing object to.

 

You could mimic the process of style creation by adding a feature that automatically created a component with only a slot object that had the styles of an existing selected object applied to it.

You could mimic the process of applying a style by allowing a component template to be selected from a palette and wrapped around the existing object, possibly replacing a component which is already wrapped around an object with a new component wrapped around the object originally matched to the slot (but how would you handle this with more than one slot in a component?  How do you match up the slots in one component with the slots in another to determine how objects get sorted into a replacement component?  What if the number of slots differs between them?).  That method of application would be similar to what I had previously suggested for being able to apply picture frames to objects.

 

However, you also need to deal with scaling issues.  Your example of a button template seems to indicate a desire for uniformity in size of the final product, meaning the object contained in the slot would need to be scaled to fit the slot object of the component.  Applying the component as a wrapper around an object would thus force the object to be scaled or cropped in some manner to fit within the slot.  You could use scaling properties similar to those of a picture frame to allow some of this, but you would also need to account for the fact that style application has NO effect on the size of the object.  If you wanted this feature to be useful as an alternative to genuine object styles, it would need to accommodate the scaling of the component to match the wrapped object(s), which may be even more complex if there are multiple slots in the component.

 

Not insurmountable, but it loses a lot of the simplicity of styles, and I would be concerned that a majority of users would see this as providing a lot of flexibility which would not benefit them and would come at the cost of added complexity, unless done very carefully to balance these issues.

Posted

Yes, I like the automatic creation of a simplest form of component.
All of the potentially still available complexity would be hidden away with that from users, who don't care to deal with it.
Those, who do, will be able to extend it.

Scaling and Cropping would not be an issue when layers are used to wrap a slot, instead of shapes with defined edges.

For placement, alignment and constraints, a new kind of object type or just intrinsic alignment feature can be provided, that defines the component edges but doesn't crop.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...

Important Information

Terms of Use | Privacy Policy | Guidelines | We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.