Home | History | Annotate | Download | only in html
      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:
     37     static PassRefPtr<TextMetrics> create() { return adoptRef(new TextMetrics); }
     38 
     39     float width() const { return m_width; }
     40     void setWidth(float w) { m_width = w; }
     41 
     42     float actualBoundingBoxLeft() const { return m_actualBoundingBoxLeft; }
     43     void setActualBoundingBoxLeft(float actualBoundingBoxLeft) { m_actualBoundingBoxLeft = actualBoundingBoxLeft; }
     44 
     45     float actualBoundingBoxRight() const { return m_actualBoundingBoxRight; }
     46     void setActualBoundingBoxRight(float actualBoundingBoxRight) { m_actualBoundingBoxRight = actualBoundingBoxRight; }
     47 
     48     float fontBoundingBoxAscent() const { return m_fontBoundingBoxAscent; }
     49     void setFontBoundingBoxAscent(float fontBoundingBoxAscent) { m_fontBoundingBoxAscent = fontBoundingBoxAscent; }
     50 
     51     float fontBoundingBoxDescent() const { return m_fontBoundingBoxDescent; }
     52     void setFontBoundingBoxDescent(float fontBoundingBoxDescent) { m_fontBoundingBoxDescent = fontBoundingBoxDescent; }
     53 
     54     float actualBoundingBoxAscent() const { return m_actualBoundingBoxAscent; }
     55     void setActualBoundingBoxAscent(float actualBoundingBoxAscent) { m_actualBoundingBoxAscent = actualBoundingBoxAscent; }
     56 
     57     float actualBoundingBoxDescent() const { return m_actualBoundingBoxDescent; }
     58     void setActualBoundingBoxDescent(float actualBoundingBoxDescent) { m_actualBoundingBoxDescent = actualBoundingBoxDescent; }
     59 
     60     float emHeightAscent() const { return m_emHeightAscent; }
     61     void setEmHeightAscent(float emHeightAscent) { m_emHeightAscent = emHeightAscent; }
     62 
     63     float emHeightDescent() const { return m_emHeightDescent; }
     64     void setEmHeightDescent(float emHeightDescent) { m_emHeightDescent = emHeightDescent; }
     65 
     66     float hangingBaseline() const { return m_hangingBaseline; }
     67     void setHangingBaseline(float hangingBaseline) { m_hangingBaseline = hangingBaseline; }
     68 
     69     float alphabeticBaseline() const { return m_alphabeticBaseline; }
     70     void setAlphabeticBaseline(float alphabeticBaseline) { m_alphabeticBaseline = alphabeticBaseline; }
     71 
     72     float ideographicBaseline() const { return m_ideographicBaseline; }
     73     void setIdeographicBaseline(float ideographicBaseline) { m_ideographicBaseline = ideographicBaseline; }
     74 
     75 private:
     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