Analysis
Overview
The frames size is the width and hight of the frame. In default mode they are the measurements of the frame content. The frame should be able to calculate its size in different modes (including paddings, border and/or margins). A frame could even be bigger than the page. In that case the frames parts which are outside the page`s range will be clipped out and wont be seen in reader mode. In author mode however all frames should be seen in whole.
Task requirements
- The frame should have properties describing width and hight.
- Those properties should be equal or grater than 0.
- The frame should be able to set and get its size in all modes.
Task result
The result of this task is source code.
Implementation idea
- Create width and hight value properties in the Frame.
- Create enums for modes if needed.
Related
- trunk/sophie2-platform/doc/spec-diagrams/FrameBounds.png
- FRAME_PADDING_R0
- FRAME_MARGINS_R0
- FRAME_INSETS_R0
- FRAME_BOUNDS_R0
How to demo
- Create frame with concrete width and height and check if they are correct.
Design
In the Frame class:
- Rename the size() property which is used for the size of the frames rectangle in default mode to contentSize() for more clearance.
- Create the method ImmSize getSize(BoundMode mode). Using the BoundMode enum it should calculate the size of the frame rectangle in the given mode.
- Create the method setSize(BoundMode mode, ImmSize size). It could use the BoundModes setSize() method to calculate the size to be set to content according to the mode in which the new size is given.
- TestFrameSize demonstrates the use of those frame bounds functionalities in different modes.
Implementation
Testing
User documentation
ITERATION_04/Release/UserDocumentation/04_WorkingWithFrames/01_ChangingTheSizeAndPositionOfAFrame
Release documentation
In this release, the width and height of a frame can be changed (starting relative to the top left corner of the frame)using the frame size/position HUD.
Manual tests
Main tests
Related tests
(none so far)
Reported bugs
(none so far)
Comments
(Write comments for this or later revisions here.)