Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(184)

Unified Diff: webkit/port/platform/UniscribeStateTextRun.cpp

Issue 10785: Debase our Uniscribe code. This moves FontUtils and all our Uniscribe code fr... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 12 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webkit/port/platform/UniscribeStateTextRun.cpp
===================================================================
--- webkit/port/platform/UniscribeStateTextRun.cpp (revision 5555)
+++ webkit/port/platform/UniscribeStateTextRun.cpp (working copy)
@@ -1,128 +0,0 @@
-/*
- * Copyright (C) 2006, 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-
-#include "UniscribeStateTextRun.h"
-
-#include "ChromiumBridge.h"
-#include "Font.h"
-#include "SimpleFontData.h"
-
-UniscribeStateTextRun::UniscribeStateTextRun(const WebCore::TextRun& run,
- const WebCore::Font& font)
- : UniscribeState(run.characters(), run.length(), run.rtl(),
- font.primaryFont()->platformData().hfont(),
- font.primaryFont()->platformData().scriptCache(),
- font.primaryFont()->platformData().scriptFontProperties()),
- font_(&font),
- font_index_(0) {
- set_directional_override(run.directionalOverride());
- set_letter_spacing(font.letterSpacing());
- set_space_width(font.spaceWidth());
- set_word_spacing(font.wordSpacing());
- set_ascent(font.primaryFont()->ascent());
-
- Init();
-
- // Padding is the amount to add to make justification happen. This
- // should be done after Init() so all the runs are already measured.
- if (run.padding() > 0)
- Justify(run.padding());
-}
-
-UniscribeStateTextRun::UniscribeStateTextRun(
- const wchar_t* input,
- int input_length,
- bool is_rtl,
- HFONT hfont,
- SCRIPT_CACHE* script_cache,
- SCRIPT_FONTPROPERTIES* font_properties)
- : UniscribeState(input, input_length, is_rtl, hfont,
- script_cache, font_properties),
- font_(NULL),
- font_index_(-1) {
-}
-
-void UniscribeStateTextRun::TryToPreloadFont(HFONT font) {
- // Ask the browser to get the font metrics for this font.
- // That will preload the font and it should now be accessible
- // from the renderer.
- WebCore::ChromiumBridge::ensureFontLoaded(font);
-}
-
-bool UniscribeStateTextRun::NextWinFontData(
- HFONT* hfont,
- SCRIPT_CACHE** script_cache,
- SCRIPT_FONTPROPERTIES** font_properties,
- int* ascent) {
- // This check is necessary because NextWinFontData can be
- // called again after we already ran out of fonts. fontDataAt
- // behaves in a strange manner when the difference between
- // param passed and # of fonts stored in WebKit::Font is
- // larger than one. We can avoid this check by setting
- // font_index_ to # of elements in hfonts_ when we run out
- // of font. In that case, we'd have to go through a couple of
- // more checks before returning false.
- if (font_index_ == -1 || !font_)
- return false;
-
- // If the font data for a fallback font requested is not
- // yet retrieved, add them to our vectors. Note that '>' rather
- // than '>=' is used to test that condition. primaryFont is not
- // stored in hfonts_, and friends so that indices for fontDataAt
- // and our vectors for font data are 1 off from each other.
- // That is, when fully populated, hfonts_ and friends have
- // one font fewer than what's contained in font_.
- if (static_cast<size_t>(++font_index_) > hfonts_->size()) {
- const WebCore::FontData *font_data;
- font_data = font_->fontDataAt(font_index_);
- if (!font_data) {
- // run out of fonts
- font_index_ = -1;
- return false;
- }
-
- // TODO(ericroman): this won't work for SegmentedFontData
- // http://b/issue?id=1007335
- const WebCore::SimpleFontData* simple_font_data =
- font_data->fontDataForCharacter(' ');
-
- hfonts_->push_back(simple_font_data->platformData().hfont());
- script_caches_->push_back(simple_font_data->platformData().scriptCache());
- font_properties_->push_back(simple_font_data->platformData().scriptFontProperties());
- ascents_->push_back(simple_font_data->ascent());
- }
-
- *hfont = hfonts_[font_index_ - 1];
- *script_cache = script_caches_[font_index_ - 1];
- *font_properties = font_properties_[font_index_ - 1];
- *ascent = ascents_[font_index_ - 1];
- return true;
-}
-
-void UniscribeStateTextRun::ResetFontIndex() {
- font_index_ = 0;
-}

Powered by Google App Engine
This is Rietveld 408576698