Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(82)

Side by Side Diff: Source/core/platform/graphics/opentype/OpenTypeVerticalData.h

Issue 99103006: Moving GraphicsContext and dependencies from core to platform. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Final patch - fixes Android Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 /*
2 * Copyright (C) 2012 Koji Ishii <kojiishi@gmail.com>
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 *
13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND AN Y
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
15 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
16 * DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR AN Y
17 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
18 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
19 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND O N
20 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
21 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
22 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23 */
24
25 #ifndef OpenTypeVerticalData_h
26 #define OpenTypeVerticalData_h
27
28 #if ENABLE(OPENTYPE_VERTICAL)
29
30 #include "platform/fonts/Glyph.h"
31 #include "wtf/HashMap.h"
32 #include "wtf/PassRefPtr.h"
33 #include "wtf/RefCounted.h"
34 #include "wtf/Vector.h"
35
36 namespace WebCore {
37
38 class FontPlatformData;
39 class GlyphPage;
40 class SimpleFontData;
41
42 class OpenTypeVerticalData : public RefCounted<OpenTypeVerticalData> {
43 public:
44 static PassRefPtr<OpenTypeVerticalData> create(const FontPlatformData& platf ormData)
45 {
46 return adoptRef(new OpenTypeVerticalData(platformData));
47 }
48
49 bool isOpenType() const { return !m_advanceWidths.isEmpty(); }
50 bool hasVerticalMetrics() const { return !m_advanceHeights.isEmpty(); }
51 float advanceHeight(const SimpleFontData*, Glyph) const;
52 void getVerticalTranslationsForGlyphs(const SimpleFontData*, const Glyph*, s ize_t, float* outXYArray) const;
53 void substituteWithVerticalGlyphs(const SimpleFontData*, GlyphPage*, unsigne d offset, unsigned length) const;
54
55 bool inFontCache() const { return m_inFontCache; }
56 void setInFontCache(bool inFontCache) { m_inFontCache = inFontCache; }
57
58 private:
59 explicit OpenTypeVerticalData(const FontPlatformData&);
60
61 void loadMetrics(const FontPlatformData&);
62 void loadVerticalGlyphSubstitutions(const FontPlatformData&);
63 bool hasVORG() const { return !m_vertOriginY.isEmpty(); }
64
65 HashMap<Glyph, Glyph> m_verticalGlyphMap;
66 Vector<uint16_t> m_advanceWidths;
67 Vector<uint16_t> m_advanceHeights;
68 Vector<int16_t> m_topSideBearings;
69 int16_t m_defaultVertOriginY;
70 HashMap<Glyph, int16_t> m_vertOriginY;
71
72 bool m_inFontCache; // for mark & sweep in FontCache::purgeInactiveFontData( )
73 };
74
75 } // namespace WebCore
76
77 #endif // ENABLE(OPENTYPE_VERTICAL)
78
79 #endif // OpenTypeVerticalData_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698