15267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)/*
25267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
35267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved.
45267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) *
55267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * This library is free software; you can redistribute it and/or
65267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * modify it under the terms of the GNU Library General Public
75267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * License as published by the Free Software Foundation; either
85267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * version 2 of the License, or (at your option) any later version.
95267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) *
105267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * This library is distributed in the hope that it will be useful,
115267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * but WITHOUT ANY WARRANTY; without even the implied warranty of
125267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
135267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * Library General Public License for more details.
145267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) *
155267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * You should have received a copy of the GNU Library General Public License
165267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * along with this library; see the file COPYING.LIB.  If not, write to
175267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
185267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * Boston, MA 02110-1301, USA.
195267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) *
205267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) */
215267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)
225267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#ifndef FontSize_h
235267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#define FontSize_h
245267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)
25197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "core/CSSValueKeywords.h"
26197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "platform/fonts/FixedPitchFontType.h"
27197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
28c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink {
295267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)
305267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)class Document;
315267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)
325267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)enum ESmartMinimumForFontSize { DoNotUseSmartMinimumForFontSize, UseSmartMinimumForFontFize };
335267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)
345267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)class FontSize {
355267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)private:
365267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    FontSize()
375267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    {
385267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    }
395267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)
405267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)public:
41e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    static float getComputedSizeFromSpecifiedSize(const Document*, float zoomFactor, bool isAbsoluteSize, float specifiedSize, ESmartMinimumForFontSize = UseSmartMinimumForFontFize);
425267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)
437242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    // Given a CSS keyword in the range (xx-small to -webkit-xxx-large), this function returns
447242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    // values from '1' to '8'.
457242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    static unsigned keywordSize(CSSValueID valueID)
467242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    {
477242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci        ASSERT(valueID >= CSSValueXxSmall && valueID <= CSSValueWebkitXxxLarge);
487242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci        return valueID - CSSValueXxSmall + 1;
497242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    }
507242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
517242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    static unsigned initialKeywordSize() { return 4; } // CSSValueMedium
527242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
537242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    // Given a keyword size in the range (1 to 8), this function will return
547242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    // the correct font size scaled relative to the user's default (4).
557242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    static float fontSizeForKeyword(const Document*, unsigned keyword, FixedPitchFontType);
565267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)
575267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    // Given a font size in pixel, this function will return legacy font size between 1 and 7.
58197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    static int legacyFontSize(const Document*, int pixelFontSize, FixedPitchFontType);
595267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)};
605267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)
61c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} // namespace blink
625267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)
635267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#endif // FontSize_h
64