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/core/v8/ScriptWrappable.h"
     30 #include "platform/heap/Handle.h"
     31 #include "wtf/PassRefPtr.h"
     32 #include "wtf/RefCounted.h"
     33 
     34 namespace blink {
     35 
     36 class TextMetrics FINAL : public RefCountedWillBeGarbageCollected<TextMetrics>, public ScriptWrappable {
     37     DEFINE_WRAPPERTYPEINFO();
     38 public:
     39     static PassRefPtrWillBeRawPtr<TextMetrics> create() { return adoptRefWillBeNoop(new TextMetrics); }
     40 
     41     float width() const { return m_width; }
     42     void setWidth(float w) { m_width = w; }
     43 
     44     float actualBoundingBoxLeft() const { return m_actualBoundingBoxLeft; }
     45     void setActualBoundingBoxLeft(float actualBoundingBoxLeft) { m_actualBoundingBoxLeft = actualBoundingBoxLeft; }
     46 
     47     float actualBoundingBoxRight() const { return m_actualBoundingBoxRight; }
     48     void setActualBoundingBoxRight(float actualBoundingBoxRight) { m_actualBoundingBoxRight = actualBoundingBoxRight; }
     49 
     50     float fontBoundingBoxAscent() const { return m_fontBoundingBoxAscent; }
     51     void setFontBoundingBoxAscent(float fontBoundingBoxAscent) { m_fontBoundingBoxAscent = fontBoundingBoxAscent; }
     52 
     53     float fontBoundingBoxDescent() const { return m_fontBoundingBoxDescent; }
     54     void setFontBoundingBoxDescent(float fontBoundingBoxDescent) { m_fontBoundingBoxDescent = fontBoundingBoxDescent; }
     55 
     56     float actualBoundingBoxAscent() const { return m_actualBoundingBoxAscent; }
     57     void setActualBoundingBoxAscent(float actualBoundingBoxAscent) { m_actualBoundingBoxAscent = actualBoundingBoxAscent; }
     58 
     59     float actualBoundingBoxDescent() const { return m_actualBoundingBoxDescent; }
     60     void setActualBoundingBoxDescent(float actualBoundingBoxDescent) { m_actualBoundingBoxDescent = actualBoundingBoxDescent; }
     61 
     62     float emHeightAscent() const { return m_emHeightAscent; }
     63     void setEmHeightAscent(float emHeightAscent) { m_emHeightAscent = emHeightAscent; }
     64 
     65     float emHeightDescent() const { return m_emHeightDescent; }
     66     void setEmHeightDescent(float emHeightDescent) { m_emHeightDescent = emHeightDescent; }
     67 
     68     float hangingBaseline() const { return m_hangingBaseline; }
     69     void setHangingBaseline(float hangingBaseline) { m_hangingBaseline = hangingBaseline; }
     70 
     71     float alphabeticBaseline() const { return m_alphabeticBaseline; }
     72     void setAlphabeticBaseline(float alphabeticBaseline) { m_alphabeticBaseline = alphabeticBaseline; }
     73 
     74     float ideographicBaseline() const { return m_ideographicBaseline; }
     75     void setIdeographicBaseline(float ideographicBaseline) { m_ideographicBaseline = ideographicBaseline; }
     76 
     77     void trace(Visitor*) { }
     78 
     79 private:
     80     TextMetrics()
     81         : m_width(0)
     82         , m_actualBoundingBoxLeft(0)
     83         , m_actualBoundingBoxRight(0)
     84         , m_fontBoundingBoxAscent(0)
     85         , m_fontBoundingBoxDescent(0)
     86         , m_actualBoundingBoxAscent(0)
     87         , m_actualBoundingBoxDescent(0)
     88         , m_emHeightAscent(0)
     89         , m_emHeightDescent(0)
     90         , m_hangingBaseline(0)
     91         , m_alphabeticBaseline(0)
     92         , m_ideographicBaseline(0) { }
     93 
     94     // x-direction
     95     float m_width;
     96     float m_actualBoundingBoxLeft;
     97     float m_actualBoundingBoxRight;
     98 
     99     // y-direction
    100     float m_fontBoundingBoxAscent;
    101     float m_fontBoundingBoxDescent;
    102     float m_actualBoundingBoxAscent;
    103     float m_actualBoundingBoxDescent;
    104     float m_emHeightAscent;
    105     float m_emHeightDescent;
    106     float m_hangingBaseline;
    107     float m_alphabeticBaseline;
    108     float m_ideographicBaseline;
    109 };
    110 
    111 } // namespace blink
    112 
    113 #endif // TextMetrics_h
    114