1*635a8641SAndroid Build Coastguard Worker // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2*635a8641SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*635a8641SAndroid Build Coastguard Worker // found in the LICENSE file. 4*635a8641SAndroid Build Coastguard Worker 5*635a8641SAndroid Build Coastguard Worker #include "ui/gfx/range/range.h" 6*635a8641SAndroid Build Coastguard Worker 7*635a8641SAndroid Build Coastguard Worker #include <inttypes.h> 8*635a8641SAndroid Build Coastguard Worker 9*635a8641SAndroid Build Coastguard Worker #include <algorithm> 10*635a8641SAndroid Build Coastguard Worker 11*635a8641SAndroid Build Coastguard Worker #include "base/logging.h" 12*635a8641SAndroid Build Coastguard Worker #include "base/strings/stringprintf.h" 13*635a8641SAndroid Build Coastguard Worker 14*635a8641SAndroid Build Coastguard Worker namespace gfx { 15*635a8641SAndroid Build Coastguard Worker Intersect(const Range & range) const16*635a8641SAndroid Build Coastguard WorkerRange Range::Intersect(const Range& range) const { 17*635a8641SAndroid Build Coastguard Worker uint32_t min = std::max(GetMin(), range.GetMin()); 18*635a8641SAndroid Build Coastguard Worker uint32_t max = std::min(GetMax(), range.GetMax()); 19*635a8641SAndroid Build Coastguard Worker 20*635a8641SAndroid Build Coastguard Worker if (min >= max) // No intersection. 21*635a8641SAndroid Build Coastguard Worker return InvalidRange(); 22*635a8641SAndroid Build Coastguard Worker 23*635a8641SAndroid Build Coastguard Worker return Range(min, max); 24*635a8641SAndroid Build Coastguard Worker } 25*635a8641SAndroid Build Coastguard Worker ToString() const26*635a8641SAndroid Build Coastguard Workerstd::string Range::ToString() const { 27*635a8641SAndroid Build Coastguard Worker return base::StringPrintf("{%" PRIu32 ",%" PRIu32 "}", start(), end()); 28*635a8641SAndroid Build Coastguard Worker } 29*635a8641SAndroid Build Coastguard Worker operator <<(std::ostream & os,const Range & range)30*635a8641SAndroid Build Coastguard Workerstd::ostream& operator<<(std::ostream& os, const Range& range) { 31*635a8641SAndroid Build Coastguard Worker return os << range.ToString(); 32*635a8641SAndroid Build Coastguard Worker } 33*635a8641SAndroid Build Coastguard Worker 34*635a8641SAndroid Build Coastguard Worker } // namespace gfx 35