summaryrefslogtreecommitdiffstats
path: root/libass/ass_outline.h
Commit message (Collapse)AuthorAgeFilesLines
* docs: fix simple typo, ouline -> outlineTim Gates2020-12-181-1/+1
| | | | | | There is a small typo in libass/ass_outline.h. Should read `outline` rather than `ouline`.
* Fix \kf fill positioningOleg Oshmyan2020-10-271-0/+3
| | | | | | | | | | | | | | | | | | Our effect_timing is currently used as a coordinate relative to a weird origin: take each glyph's center within the run, apply 3D transforms, pick the leftmost one, and round it down a little. This makes no sense and is the result of an unrelated code change. But if I recall correctly, \kf positioning was already incorrect before that last change (but in a different manner). To fix this and hopefully to prevent this kind of error from occurring again, convert effect_timing to absolute screen coordinate. Start the fill at the glyph run's leftmost post-transform control point. This matches VSFilter and allows karaoke to work in vertical text (unlike, for example, starting the fill at the first glyph's pre-transform origin). Fixes https://github.com/libass/libass/issues/216. Fixes https://github.com/libass/libass/issues/357.
* outline: fix overflows in outline processingDr.Smile2020-10-081-1/+2
| | | | | | | This commit enforces strict invariant on ASS_Outline to contain point coordinates into predetermined range. Fixes https://github.com/libass/libass/issues/431.
* Move outline transformations to ass_outline.cDr.Smile2019-05-201-2/+6
| | | | | | | | | This also potentially improves performance by copying and transforming in a single operation rather than copying first and then transforming the result. Also transformation function is specialized for case where expensive perspective division is not necessary.
* Consolidate and quantize all transformationsDr.Smile2019-05-201-3/+1
| | | | | | | | | | | | | | This commit defers all outline transformations until rasterization stage. Combined transformation is then quantized and used as bitmap key. That should improve performance of slow animations. Also caching of initial and stroked outlines and bitmaps is now separate in preparation to proper error estimation for stroker stage. Note that Z-clipping for perspective transformations is now done differently compared to VSFilter. That clipping is mostly safety feature to protect from overflows and divisions by zero and is almost never triggered in real-world subtitles.
* drawing: separate drawing text reading from outline constructionDr.Smile2019-05-191-0/+1
| | | | Purpose of this commit is to simplify logic behind drawing handling.
* Consolidate bounding box operationsDr.Smile2017-09-171-0/+17
|
* Rename DBBox to ASS_DRect for uniformityDr.Smile2017-09-171-0/+4
|
* Reorganize outline transformation functionsDr.Smile2017-09-171-1/+1
|
* Switch to more efficient representation of outlinesDr.Smile2017-09-171-6/+27
|
* Replace FreeType types with libass native typesDr.Smile2017-09-171-6/+18
| | | | | | FT_Vector and FT_BBox types are based on FT_Pos, which is alias of long. FreeType treats it as 32-bit integer, but on some platforms long can be 64-bit. That leads to wasted memory and suboptimal performance.
* renderer: switch to using two border outlines instead of oneDr.Smile2017-07-311-3/+3
|
* renderer: remove legacy FreeType rasterizerDr.Smile2017-07-311-2/+0
|
* stroker: implement fast two-outline strokerDr.Smile2017-07-311-1/+6
|
* cosmetic: extract most of the outline-related functions into separate fileDr.Smile2017-07-311-0/+49