Positioning and Batch Editing
GIF Ops supports positioning text overlays on individual frames and copying settings across multiple frames.
Text Positioning
Each frame stores a text anchor position.
By default, the anchor is the center of the GIF:
X = width / 2
Y = height / 2You can modify this position using dragging or numeric offsets.
Drag to Position
To move a caption:
- Select a frame.
- Enter text.
- Click or drag on the preview.
- Release when the text reaches the desired position.
GIF Ops converts the pointer position into the canvas's internal coordinates.
This allows drag positioning to work even when the preview canvas is visually scaled.
Important Behavior
Dragging sets the text anchor to the pointer position.
It does not require the user to grab the existing text itself; interacting anywhere on the preview can reposition the caption.
X and Y Offsets
The Position controls provide:
- X
- Y
Both accept numeric pixel offsets.
Example
X: 0
Y: -40This moves the text 40 pixels upward relative to its saved anchor.
Another example:
X: 25
Y: 10This moves the text:
- 25 pixels right
- 10 pixels down
How Position Is Calculated
The renderer combines the anchor and offsets:
Final X = Anchor X + Offset X
Final Y = Anchor Y + Offset YIf the anchor was never set by dragging, the image midpoint is used.
Alignment and Anchoring
Text alignment determines how the text is drawn relative to its anchor.
For example:
Alignment: Centercenters the text around its X coordinate.
Alignment: Leftstarts the text at that coordinate.
Alignment: Rightends the text at that coordinate.
Changing alignment can make the text appear to move even when the anchor is unchanged.
Copy Settings to All Frames
Click:
Copy → All
This copies the complete settings of the selected frame to every frame.
Copied properties include:
- text
- font
- size
- alignment
- opacity
- colors
- border
- anchor coordinates
- offsets
Example
You want the same caption throughout a 30-frame GIF.
- Select frame 1.
- Enter your caption.
- Adjust the styling.
- Position it.
- Click Copy → All.
The caption settings now apply across the animation.
Batch Apply to a Range
The Project panel includes:
- Frames: start
- end
- Apply current settings to range
Example
Start: 5
End: 15Click Apply current settings to range.
The selected frame's settings are copied to frames 5 through 15, inclusive.
Range Handling
The implementation:
- Reads the start and end values.
- Limits them to the available frame count.
- Converts them to zero-based indexes internally.
- Orders the endpoints if necessary.
- Copies settings to every frame in the range.
For example, entering:
Start: 15
End: 5still applies to frames 5 through 15.
What Batch Apply Copies
Batch Apply copies the entire current frame settings object.
It does not merge only the text or only the color.
Existing settings in the target frames are replaced.
Suggested Editing Workflows
Same Caption Everywhere
Use Copy → All.
Caption Appears Halfway Through
- Add text to a selected frame.
- Apply it to the desired range.
- Leave the remaining frames without text.
Changing Captions
- Apply one caption to the first range.
- Select another frame and enter a different caption.
- Apply the second caption to a different range.
Moving Caption
Apply different anchor positions to successive frames.
This can create a simple stepped text movement.
GIF Ops does not currently include automatic keyframe interpolation or motion tweening.
Important Limitations
- Batch edits replace complete settings objects.
- No undo or redo history is implemented.
- No interpolation between caption positions is provided.
- There is no separate multi-selection timeline editor.
- Changing a range does not modify original frame durations.
Best Practices
- Export JSON settings before large batch changes.
- Use Copy → All for globally consistent text.
- Use Apply Range for timed caption sequences.
- Check transition frames after batch editing.
- Preview the entire animation before rendering.
Updated 7 days ago
