| // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "ui/gfx/selection_model.h" |
| |
| #include <ostream> |
| |
| #include "base/format_macros.h" |
| #include "base/strings/stringprintf.h" |
| |
| namespace gfx { |
| |
| SelectionModel::SelectionModel() |
| : selection_(0), |
| caret_affinity_(CURSOR_BACKWARD) {} |
| |
| SelectionModel::SelectionModel(size_t position, LogicalCursorDirection affinity) |
| : selection_(position), |
| caret_affinity_(affinity) {} |
| |
| SelectionModel::SelectionModel(const Range& selection, |
| LogicalCursorDirection affinity) |
| : selection_(selection), |
| caret_affinity_(affinity) {} |
| |
| bool SelectionModel::operator==(const SelectionModel& sel) const { |
| return selection_ == sel.selection() && |
| caret_affinity_ == sel.caret_affinity(); |
| } |
| |
| std::string SelectionModel::ToString() const { |
| std::string str = "{"; |
| if (selection().is_empty()) |
| base::StringAppendF(&str, "%" PRIuS, caret_pos()); |
| else |
| str += selection().ToString(); |
| const bool backward = caret_affinity() == CURSOR_BACKWARD; |
| return str + (backward ? ",BACKWARD}" : ",FORWARD}"); |
| } |
| |
| std::ostream& operator<<(std::ostream& out, const SelectionModel& model) { |
| out << model.ToString(); |
| return out; |
| } |
| |
| } // namespace gfx |