Commit Graph

67 Commits

Author SHA1 Message Date
Amar Takhar 167f09a610 Merge the dynamic menu, hotkey and toolbar branch to trunk. This doesn't include Windows support as vs2008 was being a major pain. This involves revisions r4921:4950, r4961:5002, r5005:5006, r5008:5056, r5062:5065, r5072, r5081:5082, r5087, r5096:5110, r5124:5125. Updates #1258.
Originally committed to SVN as r5126.
2011-01-05 13:00:46 +00:00
Thomas Goyne 833e69b09f Replace MIN/MAX/MID with std::min/std::max/mid
Originally committed to SVN as r5078.
2010-12-31 21:03:03 +00:00
Thomas Goyne ea93f6afba Remove pointless performance hurting call to glFinish
Originally committed to SVN as r5071.
2010-12-30 22:19:42 +00:00
Thomas Goyne a64dc820a4 Remove VideoDisplay's border as on Windows it's rendered on top of the client area, hiding part of the video and throwing off hit detection for the visual tools
Originally committed to SVN as r5061.
2010-12-30 19:13:53 +00:00
Amar Takhar c15777f844 Merge audio_display_rewrite branch to trunk. This is not a complete work, don't expect to time anything for a while.
Originally committed to SVN as r4903.
2010-12-08 03:36:10 +00:00
Thomas Goyne 6d2b941e76 Rework how committing changes works
Rather than everything having to separately commit changes to the ass
and then tell the subs grid to notify various parts of Aegisub about the
changes, committing the AssFile now triggers an event which objects
listen for.

AssFile::Commit now also has an argument to indicate what sorts of
changes were made to the file. For now these types are very broad.

Originally committed to SVN as r4901.
2010-12-07 19:09:28 +00:00
Thomas Goyne d9006b0eb4 Make VideoContext use events for some of its communication with other objects
Originally committed to SVN as r4900.
2010-12-07 19:09:21 +00:00
Thomas Goyne a278901e13 Update the time relative to frame box when the subtitle file is changed to reflect timing changes immediately
Originally committed to SVN as r4816.
2010-10-16 20:11:53 +00:00
Thomas Goyne 84f646b88b Fix bug where changing the script resolution would not update the current visual tool
Originally committed to SVN as r4803.
2010-10-11 20:06:15 +00:00
Thomas Goyne 35b9769092 Pass around shared_ptrs to newly allocated AegiVideoFrames rather than pointers into a buffer of AegiVideoFrames in ThreadedFrameSource
Originally committed to SVN as r4789.
2010-09-15 22:10:48 +00:00
Thomas Goyne b9f9b0a80a Fix potential divide-by-zero with wxGTK when opening video.
Originally committed to SVN as r4741.
2010-08-13 05:51:31 +00:00
Thomas Goyne 768f74ae3c Make VideoDisplay set its initial zoom itself rather than FrameMain
Originally committed to SVN as r4739.
2010-08-13 05:51:17 +00:00
Thomas Goyne 58ca596359 Define NOMINMAX on Windows and remove workarounds for problems caused by those macros.
Originally committed to SVN as r4732.
2010-08-12 06:39:49 +00:00
Thomas Goyne 87fac1c571 Reduce flickering when changing zoom level.
Originally committed to SVN as r4728.
2010-08-03 20:21:25 +00:00
Thomas Goyne d5cbb534f8 Make VideoDisplay's size calculations slightly less convoluted.
Originally committed to SVN as r4727.
2010-08-03 20:21:19 +00:00
Thomas Goyne 2a51ad837e Fix non-precompiled header compilation
Originally committed to SVN as r4723.
2010-08-02 22:14:11 +00:00
Thomas Goyne 397b234fba Move video decoding and subtitle rendering to a worker thread
Makes the click event handler for the grid no longer slow when video
autoscroll is enabled, making it harder to accidently select multiple
lines.

Makes seeking speed no longer limited by decoding/rendering speed;
seeking faster than video can be decoded simply results in dropped
frames.

Makes editing the file while a slow-rendering frame is visible far more
responsive.

Originally committed to SVN as r4702.
2010-07-23 05:58:39 +00:00
Thomas Goyne 926b6152f1 Fix detached video crashes.
Originally committed to SVN as r4701.
2010-07-23 04:15:36 +00:00
Thomas Goyne 63cda2d755 Make gl contexts specific to VideoDisplays and only create/use them when the display is shown. Fixes a pile of X11-related assertion failures.
Originally committed to SVN as r4686.
2010-07-18 05:45:52 +00:00
Thomas Goyne 4a8abae3a3 Kill options.h and options.cpp, which have been empty for a while
Originally committed to SVN as r4676.
2010-07-12 21:49:48 +00:00
Thomas Goyne acba2c6b63 Rewrite VFR handling in Aegisub.
Kill vfr.h and vfr.cpp and use the libaegisub versions of them instead.

Rather than the globals VFR_Input and VFR_Output, everything related to
frame rate is now part of the video context. Most things which used to
use VFR_Output now call VideoContext::TimeAtFrame etc.; video providers,
rather than modifying VFR_Input directly, now have getters for their
frame rates which VideoContext calls. Read-only public access to
VFR_Input and VFR_Output are still provided (hopefully temporarily) for
a few things which were awkward to do through VideoContext.

The Avisynth provider now might correctly handle VFR MKVs which can be
opened with DirectShowSource but not DSS2.

Rework keyframe handling as well, so that it continues to match the vfr
handling in design and implementation.

Originally committed to SVN as r4662.
2010-07-08 04:29:04 +00:00
Thomas Goyne b0afd8659c Frame data does need to be uploaded to the video card on every change as the subtitles and video frame are not seperate.
Originally committed to SVN as r4633.
2010-06-28 07:39:42 +00:00
Thomas Goyne 5588cda268 Significantly revamp how visual tools interact with the rest of the program
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.
2010-06-28 07:13:15 +00:00
Thomas Goyne d30326b20d Don't create the default visual tool until video is loaded so that visual tools can assume video is loaded.
Originally committed to SVN as r4630.
2010-06-28 07:13:08 +00:00
Thomas Goyne 5338a60cdb Fix compilation errors when not using precompiled headers
Originally committed to SVN as r4511.
2010-06-14 19:26:27 +00:00
Thomas Goyne 83e35ac63d Only rerender the video display on mouse events if display will actually change
Originally committed to SVN as r4456.
2010-06-07 07:24:30 +00:00
Thomas Goyne 625ce943f5 Cache OptionValue objects used by the video display
Originally committed to SVN as r4425.
2010-06-04 03:07:33 +00:00
Thomas Goyne 877eabdce7 Fix selection issues with visual features
Selections in drag mode now follow the following rules:

 * If a line is selected in the grid, at least one visual feature
   corresponding to the line is selected.

 * If a line has any features selected, that line is selected in the
   grid.

In addition, all control points now start out selected in the vector
clip tool, and all tools should no longer discard the current selection
at unpredictable or unintended times.

Updates #513.

Originally committed to SVN as r4363.
2010-05-26 07:17:39 +00:00
Amar Takhar 40e12403d5 Merge all changes from the libaegisub branch into trunk, the effective range is r4175:4330. All options have been re-done and now use Cajun to support a json-backed format.
Initial support for low-level access and file I/O methods are included as well.

Originally committed to SVN as r4331.
2010-05-21 01:13:36 +00:00
Thomas Goyne 49abae2698 Fix a merge conflict and some newline issues
Originally committed to SVN as r4290.
2010-05-16 07:06:08 +00:00
Thomas Goyne 2c876e79c3 Make visual tools use only screen coordinates.
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.
2010-05-16 06:39:11 +00:00
Thomas Goyne 74a9bdeb41 Limit the canvas size to the window's size to avoid things exploding at high zoom levels
Originally committed to SVN as r4288.
2010-05-16 06:39:06 +00:00
Thomas Goyne 94cf2949f1 Make the calculation of black borders in the video display happen on resize rather than on draw.
Originally committed to SVN as r4287.
2010-05-16 06:38:59 +00:00
Thomas Goyne 624df412ea Kill the horrifying PrettyFloat function and just use g instead of f everywhere it was used.
Originally committed to SVN as r4280.
2010-05-13 18:41:46 +00:00
Thomas Goyne 247e756c9b Move doxygen stuff for VideoDisplay to the header and fill in some missing docs.
Originally committed to SVN as r4278.
2010-05-13 18:37:46 +00:00
Thomas Goyne 290353d467 Bump copyright years on video_display.*
Originally committed to SVN as r4277.
2010-05-13 18:37:41 +00:00
Thomas Goyne 5215049c07 Add mouse wheel video zooming
Originally committed to SVN as r4276.
2010-05-13 18:37:35 +00:00
Thomas Goyne c7e06e9451 Change the uses of -1 for invalid positions in the visual typesetting tools to INT_MIN, as -1 is sometimes a perfectly valid coordinate
Originally committed to SVN as r4258.
2010-05-01 01:45:16 +00:00
Thomas Goyne 5cbabf2d35 Add an option to only display visual typesetting tools when the mouse is over the video.
Originally committed to SVN as r4257.
2010-05-01 01:45:10 +00:00
Thomas Goyne 61c141a714 Change zoom to an arbitrary percentage rather than an index into a fixed list of allowed zooms
Originally committed to SVN as r4256.
2010-05-01 01:07:05 +00:00
Thomas Goyne 27a159793a (Re)add catch for wchar_t in VideoDisplay::Render as it turns out that some of the stuff it calls still throws strings
Originally committed to SVN as r4249.
2010-04-30 03:00:15 +00:00
Thomas Goyne 7ac273eca0 Fix problems with how VideoDisplay's size was being set resulting in the border being subtracted from the video size and the video always taking up the full width of the box even at very low zoom levels. Updates #1137, #1140.
Originally committed to SVN as r4077.
2010-01-31 18:49:37 +00:00
Thomas Goyne 7ffc3d4080 Move more of the purely OpenGL-related code into VideoOutGL from VideoDisplay and simplify the calculation of the texture grid positions slightly.
Originally committed to SVN as r4037.
2010-01-24 19:05:20 +00:00
Thomas Goyne 2f2f0d9aac Fix some assorted VideoOutGL-related stupidity. Updates #1056.
Originally committed to SVN as r3864.
2009-12-13 19:27:45 +00:00
Thomas Goyne 86f64b2962 Improve video operation errors somewhat. Updates #1020.
Originally committed to SVN as r3835.
2009-12-01 00:32:43 +00:00
Thomas Goyne dcfdb02e6c Significantly reduce the number of unnecessary calls to VideoContext::GetFrame.
Originally committed to SVN as r3739.
2009-10-27 14:27:39 +00:00
Thomas Goyne df5ada1006 Make the video display only upload texture data when the frame has changed rather than every time Render is called.
Originally committed to SVN as r3726.
2009-10-20 19:07:18 +00:00
Thomas Goyne 3032c4f883 Fix a memory leak and a minor graphical glitch that sometimes happened to the video slider when switching visual typesetting modes.
Originally committed to SVN as r3709.
2009-10-13 17:28:39 +00:00
Thomas Goyne 05c9ffde7a Make detached video work again.
Originally committed to SVN as r3651.
2009-10-09 02:21:30 +00:00
Thomas Goyne 37ec7ad62c Increase the maximum zoom to 300%.
Originally committed to SVN as r3634.
2009-10-06 17:43:15 +00:00