Home | History | Annotate | Download | only in gfx
      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 
     10 namespace gfx {
     11 
     12 SelectionModel::SelectionModel()
     13     : selection_(0),
     14       caret_affinity_(CURSOR_BACKWARD) {}
     15 
     16 SelectionModel::SelectionModel(size_t position, LogicalCursorDirection affinity)
     17     : selection_(position),
     18       caret_affinity_(affinity) {}
     19 
     20 SelectionModel::SelectionModel(const Range& selection,
     21                                LogicalCursorDirection affinity)
     22     : selection_(selection),
     23       caret_affinity_(affinity) {}
     24 
     25 bool SelectionModel::operator==(const SelectionModel& sel) const {
     26   return selection_ == sel.selection() &&
     27          caret_affinity_ == sel.caret_affinity();
     28 }
     29 
     30 std::string SelectionModel::ToString() const {
     31   std::string str = "{";
     32   if (selection().is_empty())
     33     base::StringAppendF(&str, "%" PRIuS, caret_pos());
     34   else
     35     str += selection().ToString();
     36   const bool backward = caret_affinity() == CURSOR_BACKWARD;
     37   return str + (backward ? ",BACKWARD}" : ",FORWARD}");
     38 }
     39 
     40 }  // namespace gfx
     41