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