1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "ui/gfx/selection_model.h" 6 7#include "base/format_macros.h" 8#include "base/strings/stringprintf.h" 9 10namespace gfx { 11 12SelectionModel::SelectionModel() 13 : selection_(0), caret_affinity_(CURSOR_BACKWARD) {} 14 15SelectionModel::SelectionModel(size_t position, LogicalCursorDirection affinity) 16 : selection_(position), caret_affinity_(affinity) {} 17 18SelectionModel::SelectionModel(ui::Range selection, 19 LogicalCursorDirection affinity) 20 : selection_(selection), caret_affinity_(affinity) {} 21 22bool SelectionModel::operator==(const SelectionModel& sel) const { 23 return selection_ == sel.selection() && 24 caret_affinity_ == sel.caret_affinity(); 25} 26 27std::string SelectionModel::ToString() const { 28 std::string str = "{"; 29 if (selection().is_empty()) 30 base::StringAppendF(&str, "%" PRIuS, caret_pos()); 31 else 32 str += selection().ToString(); 33 const bool backward = caret_affinity() == CURSOR_BACKWARD; 34 return str + (backward ? ",BACKWARD}" : ",FORWARD}"); 35} 36 37} // namespace gfx 38