9 Commits

Author SHA1 Message Date
Raph Levien
02b919bc17 Better refcounting and locking
All major externally accessible objects (especially FontFamily and
FontCollection) are now reference counted. In addition, there is a
global lock intended to make operations thread-safe.

WIP notice: in this version of the patch, not all external API entry
points are protected by the lock. That should be fixed.

Change-Id: I14106196e99eb101e8bf1bcb4b81359759d2086c
2014-05-12 10:28:15 -07:00
Raph Levien
eee04fd1e5 A basket of features: itemization, bounds, refcount
This patch improves script run itemization and also exposes metrics
and bounds for layouts. In addition, there is a fair amount of internal
cleanup, including ref counting, and making the MinikinFont abstraction
strong enough to support both FreeType and Skia implementations. There
is also a sample implementation using Skia, in the sample directory.

As part of its functionality, his patch measures the bounds of the
layout and gives access through Layout::GetBounds().  The corresponding
method is not implemented in the FreeType-only implementation of
MinikinFont, so that will probably have to be fixed.

Change-Id: Ib1a3fe9d7c90519ac651fb4aa957848e4bb758ec
2014-05-12 09:08:15 -07:00
Kenny Root
014dae7e78 Use canonical UniquePtr.h file
Change-Id: I00953971034a7d00ca165accdab528d2b8ff27a7
2013-09-11 23:24:24 -07:00
Kenny Root
0ab6d024ff Use canonical UniquePtr.h header
Change-Id: Id50e9d6fe2f08d3121b168b45791a8e8fb045d7f
2013-09-11 15:02:30 -07:00
Victoria Lease
79497ccc90 Use shared ft2 lib, deal with libpng/zlib deps
Bug: 9603326
Change-Id: I7df1f68fa3a44b37b1b279387f4ddfe942928bb0
2013-06-27 15:43:55 -07:00
Raph Levien
c905bdf4be Fix build breakage
The MinikinFont class was missing a destructor. The build error was
not caught because incremental builds didn't see fit to relink after
I deleted one of the source files (that contained the impl of this
destructor).

Change-Id: Ic72d56fe28316cd2b2f808910e34ca6f177a1220
2013-06-14 14:12:07 -07:00
Raph Levien
8d9541c5fb Introduce MinikinFont abstraction
This commit removes the direct dependency on FreeType and replaces it
with a MinikinFont abstraction, which is designed to support both
FreeType and Skia fonts (and possibly others in the future).

Also adds a "total advance" to the Layout, with an API for retrieving
it.

Change-Id: If20f92db9a43fd15b0fe9794b761ba00fb21338c
2013-06-14 11:22:35 -07:00
Raph Levien
c1a6032ce6 Initial commit of Minikin library
This is the initial draft of Minikin, a library intended to perform text
layout functions. This version does basic weight selection and font runs
for scripts, and also has a simple renderer for drawing into bitmaps,
but is lacking measurement, line breaking, and a number of other
important features. It also lacks caching and other performance
refinements.

Change-Id: I789a2e47d11d71202dc84b4751b51a5e2cd9c451
2013-04-25 12:23:57 -07:00
Chad Jones
cd404cb5e1 Initial empty repository 2013-04-19 10:28:48 -07:00