1366f57fb4efd0ddf5d48cd232cd88d3777517ea2Seigo Nonaka/* 2366f57fb4efd0ddf5d48cd232cd88d3777517ea2Seigo Nonaka * Copyright (C) 2018 The Android Open Source Project 3366f57fb4efd0ddf5d48cd232cd88d3777517ea2Seigo Nonaka * 4366f57fb4efd0ddf5d48cd232cd88d3777517ea2Seigo Nonaka * Licensed under the Apache License, Version 2.0 (the "License"); 5366f57fb4efd0ddf5d48cd232cd88d3777517ea2Seigo Nonaka * you may not use this file except in compliance with the License. 6366f57fb4efd0ddf5d48cd232cd88d3777517ea2Seigo Nonaka * You may obtain a copy of the License at 7366f57fb4efd0ddf5d48cd232cd88d3777517ea2Seigo Nonaka * 8366f57fb4efd0ddf5d48cd232cd88d3777517ea2Seigo Nonaka * http://www.apache.org/licenses/LICENSE-2.0 9366f57fb4efd0ddf5d48cd232cd88d3777517ea2Seigo Nonaka * 10366f57fb4efd0ddf5d48cd232cd88d3777517ea2Seigo Nonaka * Unless required by applicable law or agreed to in writing, software 11366f57fb4efd0ddf5d48cd232cd88d3777517ea2Seigo Nonaka * distributed under the License is distributed on an "AS IS" BASIS, 12366f57fb4efd0ddf5d48cd232cd88d3777517ea2Seigo Nonaka * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13366f57fb4efd0ddf5d48cd232cd88d3777517ea2Seigo Nonaka * See the License for the specific language governing permissions and 14366f57fb4efd0ddf5d48cd232cd88d3777517ea2Seigo Nonaka * limitations under the License. 15366f57fb4efd0ddf5d48cd232cd88d3777517ea2Seigo Nonaka */ 16366f57fb4efd0ddf5d48cd232cd88d3777517ea2Seigo Nonaka 17366f57fb4efd0ddf5d48cd232cd88d3777517ea2Seigo Nonaka#include "minikin/LineBreaker.h" 18366f57fb4efd0ddf5d48cd232cd88d3777517ea2Seigo Nonaka 19366f57fb4efd0ddf5d48cd232cd88d3777517ea2Seigo Nonaka#include "GreedyLineBreaker.h" 20366f57fb4efd0ddf5d48cd232cd88d3777517ea2Seigo Nonaka#include "OptimalLineBreaker.h" 21366f57fb4efd0ddf5d48cd232cd88d3777517ea2Seigo Nonaka 22366f57fb4efd0ddf5d48cd232cd88d3777517ea2Seigo Nonakanamespace minikin { 23366f57fb4efd0ddf5d48cd232cd88d3777517ea2Seigo Nonaka 24366f57fb4efd0ddf5d48cd232cd88d3777517ea2Seigo NonakaLineBreakResult breakIntoLines(const U16StringPiece& textBuffer, BreakStrategy strategy, 25366f57fb4efd0ddf5d48cd232cd88d3777517ea2Seigo Nonaka HyphenationFrequency frequency, bool justified, 26366f57fb4efd0ddf5d48cd232cd88d3777517ea2Seigo Nonaka const MeasuredText& measuredText, const LineWidth& lineWidth, 27366f57fb4efd0ddf5d48cd232cd88d3777517ea2Seigo Nonaka const TabStops& tabStops) { 28366f57fb4efd0ddf5d48cd232cd88d3777517ea2Seigo Nonaka if (strategy == BreakStrategy::Greedy || textBuffer.hasChar(CHAR_TAB)) { 29366f57fb4efd0ddf5d48cd232cd88d3777517ea2Seigo Nonaka return breakLineGreedy(textBuffer, measuredText, lineWidth, tabStops, 30366f57fb4efd0ddf5d48cd232cd88d3777517ea2Seigo Nonaka frequency != HyphenationFrequency::None); 31366f57fb4efd0ddf5d48cd232cd88d3777517ea2Seigo Nonaka } else { 32366f57fb4efd0ddf5d48cd232cd88d3777517ea2Seigo Nonaka return breakLineOptimal(textBuffer, measuredText, lineWidth, strategy, frequency, 33366f57fb4efd0ddf5d48cd232cd88d3777517ea2Seigo Nonaka justified); 34366f57fb4efd0ddf5d48cd232cd88d3777517ea2Seigo Nonaka } 35366f57fb4efd0ddf5d48cd232cd88d3777517ea2Seigo Nonaka} 36366f57fb4efd0ddf5d48cd232cd88d3777517ea2Seigo Nonaka 37366f57fb4efd0ddf5d48cd232cd88d3777517ea2Seigo Nonaka} // namespace minikin 38