• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2008 Apple Inc. All Rights Reserved.
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. ``AS IS'' AND ANY
14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24  */
25 
26 #ifndef TextMetrics_h
27 #define TextMetrics_h
28 
29 #include "bindings/v8/ScriptWrappable.h"
30 #include "wtf/PassRefPtr.h"
31 #include "wtf/RefCounted.h"
32 
33 namespace WebCore {
34 
35 class TextMetrics : public RefCounted<TextMetrics>, public ScriptWrappable {
36 public:
create()37     static PassRefPtr<TextMetrics> create() { return adoptRef(new TextMetrics); }
38 
width()39     float width() const { return m_width; }
setWidth(float w)40     void setWidth(float w) { m_width = w; }
41 
actualBoundingBoxLeft()42     float actualBoundingBoxLeft() const { return m_actualBoundingBoxLeft; }
setActualBoundingBoxLeft(float actualBoundingBoxLeft)43     void setActualBoundingBoxLeft(float actualBoundingBoxLeft) { m_actualBoundingBoxLeft = actualBoundingBoxLeft; }
44 
actualBoundingBoxRight()45     float actualBoundingBoxRight() const { return m_actualBoundingBoxRight; }
setActualBoundingBoxRight(float actualBoundingBoxRight)46     void setActualBoundingBoxRight(float actualBoundingBoxRight) { m_actualBoundingBoxRight = actualBoundingBoxRight; }
47 
fontBoundingBoxAscent()48     float fontBoundingBoxAscent() const { return m_fontBoundingBoxAscent; }
setFontBoundingBoxAscent(float fontBoundingBoxAscent)49     void setFontBoundingBoxAscent(float fontBoundingBoxAscent) { m_fontBoundingBoxAscent = fontBoundingBoxAscent; }
50 
fontBoundingBoxDescent()51     float fontBoundingBoxDescent() const { return m_fontBoundingBoxDescent; }
setFontBoundingBoxDescent(float fontBoundingBoxDescent)52     void setFontBoundingBoxDescent(float fontBoundingBoxDescent) { m_fontBoundingBoxDescent = fontBoundingBoxDescent; }
53 
actualBoundingBoxAscent()54     float actualBoundingBoxAscent() const { return m_actualBoundingBoxAscent; }
setActualBoundingBoxAscent(float actualBoundingBoxAscent)55     void setActualBoundingBoxAscent(float actualBoundingBoxAscent) { m_actualBoundingBoxAscent = actualBoundingBoxAscent; }
56 
actualBoundingBoxDescent()57     float actualBoundingBoxDescent() const { return m_actualBoundingBoxDescent; }
setActualBoundingBoxDescent(float actualBoundingBoxDescent)58     void setActualBoundingBoxDescent(float actualBoundingBoxDescent) { m_actualBoundingBoxDescent = actualBoundingBoxDescent; }
59 
emHeightAscent()60     float emHeightAscent() const { return m_emHeightAscent; }
setEmHeightAscent(float emHeightAscent)61     void setEmHeightAscent(float emHeightAscent) { m_emHeightAscent = emHeightAscent; }
62 
emHeightDescent()63     float emHeightDescent() const { return m_emHeightDescent; }
setEmHeightDescent(float emHeightDescent)64     void setEmHeightDescent(float emHeightDescent) { m_emHeightDescent = emHeightDescent; }
65 
hangingBaseline()66     float hangingBaseline() const { return m_hangingBaseline; }
setHangingBaseline(float hangingBaseline)67     void setHangingBaseline(float hangingBaseline) { m_hangingBaseline = hangingBaseline; }
68 
alphabeticBaseline()69     float alphabeticBaseline() const { return m_alphabeticBaseline; }
setAlphabeticBaseline(float alphabeticBaseline)70     void setAlphabeticBaseline(float alphabeticBaseline) { m_alphabeticBaseline = alphabeticBaseline; }
71 
ideographicBaseline()72     float ideographicBaseline() const { return m_ideographicBaseline; }
setIdeographicBaseline(float ideographicBaseline)73     void setIdeographicBaseline(float ideographicBaseline) { m_ideographicBaseline = ideographicBaseline; }
74 
75 private:
TextMetrics()76     TextMetrics()
77         : m_width(0)
78         , m_actualBoundingBoxLeft(0)
79         , m_actualBoundingBoxRight(0)
80         , m_fontBoundingBoxAscent(0)
81         , m_fontBoundingBoxDescent(0)
82         , m_actualBoundingBoxAscent(0)
83         , m_actualBoundingBoxDescent(0)
84         , m_emHeightAscent(0)
85         , m_emHeightDescent(0)
86         , m_hangingBaseline(0)
87         , m_alphabeticBaseline(0)
88         , m_ideographicBaseline(0)
89     {
90         ScriptWrappable::init(this);
91     }
92 
93     // x-direction
94     float m_width;
95     float m_actualBoundingBoxLeft;
96     float m_actualBoundingBoxRight;
97 
98     // y-direction
99     float m_fontBoundingBoxAscent;
100     float m_fontBoundingBoxDescent;
101     float m_actualBoundingBoxAscent;
102     float m_actualBoundingBoxDescent;
103     float m_emHeightAscent;
104     float m_emHeightDescent;
105     float m_hangingBaseline;
106     float m_alphabeticBaseline;
107     float m_ideographicBaseline;
108 };
109 
110 } // namespace WebCore
111 
112 #endif // TextMetrics_h
113