mirror of https://github.com/GNOME/gimp.git
devel-docs: starting to move development documents to dev website.
This file was just moved as content/core/specifications/locks.md in the pat/bootstrap branch of the gimp-web-devel repository. This branch will soon be merged and become our new website. Removing the now duplicate in our source repo.
This commit is contained in:
parent
cfeedb8736
commit
76bc349279
|
@ -1,162 +0,0 @@
|
|||
This file details the logic for item locks (on layers, channels, paths,
|
||||
etc.)
|
||||
|
||||
[TOC]
|
||||
|
||||
## The 4 types of locks
|
||||
### Lock pixels
|
||||
|
||||
Locking pixels means you cannot change any value in any of the channels
|
||||
of the image. In other words, you cannot paint, erase, apply any
|
||||
filters, neither can you apply most transformations.
|
||||
|
||||
The only transformation which you can apply is moving the whole layer at
|
||||
once (not moving a selection contents), because then you only change the
|
||||
offsets. The contents of each channel stay the same.
|
||||
|
||||
### Lock position
|
||||
|
||||
Locking position is the opposite of the "Lock pixels" as you can do
|
||||
anything on your item except moving it, i.e. changing its offsets.
|
||||
|
||||
### Lock alpha
|
||||
|
||||
Locking alpha is in a way a subcase of "Lock pixels" as the only channel
|
||||
which cannot change is the alpha channel, i.e. how transparent is each
|
||||
pixel. You can still change the colors of pixels, but not their
|
||||
transparency. In other words, if you paint over a layer with "Lock
|
||||
alpha", this would only affect the color.
|
||||
|
||||
This use case can sometimes be frustrating/confusing if you paint over
|
||||
full transparent pixels as it would look it's not working, yet you would
|
||||
get neither statusbar error nor blinking locks to explain why you see no
|
||||
changes on your layer.
|
||||
|
||||
This lock is useless over an item with no alpha channel, though it is
|
||||
currently still allowed to set such a lock. It just does nothing useful.
|
||||
|
||||
Note that you can still change the opacity of the item as a whole
|
||||
through the Opacity slider (for instance in Layers or Channels
|
||||
dockables) or through actions affecting the layer's opacity. It's only
|
||||
individual pixel alpha values which are locked.
|
||||
|
||||
### Lock visibility
|
||||
|
||||
Locking visibility means you cannot change the item's visibility
|
||||
(typically the "eye" icon on dockables).
|
||||
|
||||
This is especially useful for when you [shift-click or
|
||||
alt-click](#exclusive-visibility-locks-switch) the eye icons to
|
||||
massively toggle item visibility, yet you want to exclude some items.
|
||||
For instance, say you have a background you want to always show and
|
||||
several foreground object you want to conditionally show alone or
|
||||
together. You could lock the background to keep it always visible and
|
||||
shift-click foreground objects.
|
||||
|
||||
## Effects on layer groups
|
||||
|
||||
Layers in particular can be grouped in "Layer groups". Though the effect
|
||||
of locks is obvious on non-group items, we tried to specify their
|
||||
behaviour when set on layer groups to be the most useful and also
|
||||
hopefully expected possible.
|
||||
|
||||
Below are what the effects are for various locks.
|
||||
|
||||
### Lock pixels and alpha
|
||||
|
||||
Since it involves painting, it means nothing on layer groups as you
|
||||
can't paint on them. There are 2 exceptions:
|
||||
|
||||
#### Layer group masks
|
||||
|
||||
A layer group can have a mask. A "Lock pixels" would prevent from
|
||||
drawing in it. "Lock alpha" is meaningless there as masks don't have
|
||||
alpha channels (well they are kind of separate alpha value themselves,
|
||||
but as said, we use the "Lock pixels" to block this type of editing).
|
||||
|
||||
#### Child layers
|
||||
|
||||
These 2 locks when set on a group apply on all children. In other words,
|
||||
you can lock painting and drawing on many layers organized in groups by
|
||||
locking an ancestor.
|
||||
|
||||
### Lock position
|
||||
|
||||
Moving the group as a whole is equivalent to moving each and every of
|
||||
its children layers (recursively if there are sub-groups). Locking the
|
||||
layer group forbid this.
|
||||
|
||||
Locking a group also forbid moving any child layer individually, as do
|
||||
"Lock pixels" and "Lock alpha".
|
||||
|
||||
Note that locking the position of a child layer also prevents the whole
|
||||
group contents to be moved.
|
||||
|
||||
So "Lock position" is really working both ways: any lock in the tree
|
||||
prevents the whole direct genealogy of layers to be moved. Sister layers
|
||||
are fine though.
|
||||
|
||||
### Lock visibility
|
||||
|
||||
Locking a layer group visibility has the exact semantic as locking a
|
||||
non-group layer since this is the only feature which is actually
|
||||
normally applicable to layer groups.
|
||||
|
||||
Also it means that unlike all other lock features, locking the
|
||||
visibility of the layer group does not forbid changing visibility of a
|
||||
child layer.
|
||||
|
||||
## Layer mask
|
||||
|
||||
The layer mask is also its own particular case. Right now, the "Lock
|
||||
alpha" and "Lock visibility" don't affect them (masks are somehow their
|
||||
own alpha channel, but in the same time, we use "Lock pixels" to forbid
|
||||
painting; as for visibility, they have their own feature for this).
|
||||
|
||||
"Lock pixels" prevents from painting in a mask.
|
||||
|
||||
Note that both "Lock pixels" and "Lock position" prevent from moving a
|
||||
mask. Indeed masks dimensions are currently tied to their associated
|
||||
layer (or layer group) dimensions. It means than moving a mask does not
|
||||
just change the offset. You actually also delete some of the mask
|
||||
pixels/data and create new ones. Therefore moving changes the contents
|
||||
of the mask, which is why "Lock pixels" also prevent moving the mask.
|
||||
|
||||
## Exclusive visibility/locks switch
|
||||
|
||||
GIMP provides a way to massively toggles visibility and locks.
|
||||
|
||||
### Exclusive switch on same level
|
||||
|
||||
When `Shift-clicking` either a visibility icon or a lock icon, all other
|
||||
visibility or locks respectively on the same level will be switched OFF
|
||||
(leaving only the clicked switch ON). `Shift-clicking` again, all
|
||||
visibility or locks on same level will be back on.
|
||||
|
||||
Say the state is:
|
||||
|
||||
```
|
||||
* Layer 1
|
||||
* Layer group
|
||||
* Layer 2
|
||||
* Layer 3
|
||||
* Layer 4
|
||||
* Layer 5
|
||||
```
|
||||
|
||||
Then `Shift-click` the eye icon of Layer 3: Layer 2 and Layer 4's
|
||||
visibility will be turned OFF. Shift-click again and it goes back to
|
||||
initial state.
|
||||
|
||||
### Exclusive switch of selected items
|
||||
|
||||
When `Alt-clicking` a visibility or lock icon, the same happens as
|
||||
`Shift-click` except among selected items. The level in the item tree
|
||||
doesn't matter.
|
||||
|
||||
### Exclusive visibility switch with a "Lock visibility" set
|
||||
|
||||
If any "Lock visibility" is set on an item, its visibility status won't
|
||||
be switched along other items when `Shift-clicking` or `Alt-clicking`.
|
||||
Being able to exclude some items from such massive switch is one of the
|
||||
main use case of the "Lock visibility".
|
Loading…
Reference in New Issue