Convert all coordinates within the visual tools to Vector2D, which has
been significantly extended. Eliminates a lot of issues with accumulated
rounding errors and simplifies a lot of code.
Modernize the visual tools' interactions with the rest of Aegisub by
connecting to signals directly rather than routing everything through
the video display and converting the main visual tool mode toolbar to
the command system.
Extract all references to OpenGL from the visual tools and move them to
OpenGLWrapper as a first step towards making it possible to implement an
alternative video renderer. In the process, eliminate all uses of OpenGL
immediate mode.
Fix a bunch of minor issues and general instability.
Originally committed to SVN as r5823.
Rather than just have a single Refresh method that gets called whenever
something happens that could possibly be of interest to the visual
tools, add seperate methods for signaling frame number changes and
changes to the file, and use the new SelectionController stuff for other
things that used to merit a Refresh. This eliminates a large amount of
redundant reparsing of lines which happened on paint, as well as a large
number of redundant repaints.
Frame data is now only uploaded to the video card when the frame number changes
rather than when anything at all changes, slightly improving performance when
using mesa's software opengl implementation.
Vector clip and drag tools now do a slightly better job of not
discarding the user's selection for no apparent reason, and strange
selection behavior from clicking on visual features should now be
entirely fixed.
Everything but the constructor and toolbar event handler in the visual
tool implementations are now private.
Originally committed to SVN as r4631.
Make all visual tools support selecting and manipulating multiple visual
features at once, allowing multiple lines to be moved at once, entire
vector clips to be translated, etc. Controls:
- Left click: Select control clicked control only
- Ctrl-left click: Add/remove control to selection
- Drag control (with or without ctrl): Move all selected controls,
after setting/adding to selection if target is not in the selection
- Click on no control: Clear selection
Lots of little stuff to fix still.
Updates #513.
Originally committed to SVN as r4322.
Previously the visual typesetting tools and the overlay mask used
several coordinate frames, converting between them in many places in
inconsistent ways. This elimiates all uses of coordinate frames other
than screen and script, and makes the conversion done in one place, and
only when parsing or serializing ASS.
This fixes:
- A few minor rounding errors
- Horrible brokeness when only part of the video frame is being
displayed, due to higher levels of zoom than fit onscreen or panning
the video
- Distortion of the visual typesetting tools when the combination of
overridden aspect ratio, script resolution, and video resolution did
not result in square pixels.
- Resolution-dependence of the visual typesetting tools, which resulted
in some tools becoming hard to use at zooms outside the range of
100-200%.
- Some draggable controls used the mouse's script coordinates,
resulting in noticable jerky movement at high zoom levels or when
using strange script resolutions.
Closes#966.
Originally committed to SVN as r4289.
* Wrapping all headers that are in agi_pre.h with AGI_PRE.
* Sorting alphabetically.
* Same operation as r3515.
Note: This is broken when precompiled headers are not in use, I'll fix that after this commit so the two changes don't get jumbled up.
Originally committed to SVN as r3525.
Document all functions, class, struct, union, enum, macro, variable, typedefs. This isn't the actual document in itself but empty documentation using any old documentation if it was there.
This was done using exuberant ctags to get tag info, then a TCL script to parse/remove old comments and convert them into Doxygen-style.
Some notes:
* Anything labeled 'DOCME' needs to be documented, @param and @return have been left blank as it would be annoying to delete the 'DOCME' from every one of those.
* Some multiline comments may have been munged into single line comments
* Leave the /// comments above global variables with a space, if they're harder to read then we'll be less likey to use them.
* Enum comments can go after the enumeration itself '[value] /// comment'
* include/aegisub/*.h haven't been converted yet, this will be done in a later commit
* Some documentation blocks are in the wrong place, in the .h when it should be in the .cpp, or vice versa.
See http://devel.aegisub.org/wiki/Doxygen for some details on Doxygen and a 'style guide'.
Originally committed to SVN as r3312.
* Swap old email + website address with 'Aegisub Project http://www.aegisub.org/'
* Set categories for all files (jfs)
* Add descriptions for each file (jfs)
* Add $Id$ keyword
Originally committed to SVN as r3310.