diff options
author | Hidehiko Abe <hidehiko@google.com> | 2018-04-12 16:59:04 +0900 |
---|---|---|
committer | Hidehiko Abe <hidehiko@google.com> | 2018-04-12 16:59:04 +0900 |
commit | bcfb83a260faa1423bf4e0bf3ecc214dc612dfa3 (patch) | |
tree | 875a59e2f7460dd601b990e47ba740de6de1d8d0 | |
parent | 73a1998cc30a1d8ea405740a75dde800cf2b5dcc (diff) | |
download | libmojo-bcfb83a260faa1423bf4e0bf3ecc214dc612dfa3.tar.gz |
Migrate libmojo repository into libchrome, part 1.android-o-mr1-iot-preview-8o-mr1-iot-preview-8
This CL moves following files.
- base/* except base/android/*
- devices/*
- ui/* except ui/gfx/**/mojom/*
- ui/gfx/range/range_mac(_unittest)?.mm are just deleted.
Bug: 73606903
Test: Built locally.
Change-Id: Id0ddf095bb80ba7f48c7650b00916efccb419f16
56 files changed, 0 insertions, 5207 deletions
@@ -234,13 +234,6 @@ cc_library_shared { "base/android/jni_android.cc", "base/android/jni_string.cc", "base/android/scoped_java_ref.cc", - "base/base_paths.cc", - "base/base_paths_posix.cc", - "base/path_service.cc", - "base/unguessable_token.cc", - "device/bluetooth/bluetooth_advertisement.cc", - "device/bluetooth/bluetooth_uuid.cc", - "device/bluetooth/bluez/bluetooth_service_attribute_value_bluez.cc", "ipc/ipc_message.cc", "ipc/ipc_message_attachment.cc", "ipc/ipc_message_attachment_set.cc", @@ -327,20 +320,6 @@ cc_library_shared { "mojo/public/cpp/system/buffer.cc", "mojo/public/cpp/system/platform_handle.cc", "mojo/public/cpp/system/watcher.cc", - "ui/gfx/geometry/insets.cc", - "ui/gfx/geometry/insets_f.cc", - "ui/gfx/geometry/point.cc", - "ui/gfx/geometry/point_conversions.cc", - "ui/gfx/geometry/point_f.cc", - "ui/gfx/geometry/rect.cc", - "ui/gfx/geometry/rect_f.cc", - "ui/gfx/geometry/size.cc", - "ui/gfx/geometry/size_conversions.cc", - "ui/gfx/geometry/size_f.cc", - "ui/gfx/geometry/vector2d.cc", - "ui/gfx/geometry/vector2d_f.cc", - "ui/gfx/range/range.cc", - "ui/gfx/range/range_f.cc", ], cflags: [ diff --git a/base/base_paths.cc b/base/base_paths.cc deleted file mode 100644 index 31bc554..0000000 --- a/base/base_paths.cc +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright (c) 2006-2008 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 "base/base_paths.h" - -#include "base/files/file_path.h" -#include "base/files/file_util.h" -#include "base/path_service.h" - -namespace base { - -bool PathProvider(int key, FilePath* result) { - // NOTE: DIR_CURRENT is a special case in PathService::Get - - switch (key) { - case DIR_EXE: - PathService::Get(FILE_EXE, result); - *result = result->DirName(); - return true; - case DIR_MODULE: - PathService::Get(FILE_MODULE, result); - *result = result->DirName(); - return true; - case DIR_TEMP: - if (!GetTempDir(result)) - return false; - return true; - case base::DIR_HOME: - *result = GetHomeDir(); - return true; - case DIR_TEST_DATA: { - FilePath test_data_path; - if (!PathService::Get(DIR_SOURCE_ROOT, &test_data_path)) - return false; - test_data_path = test_data_path.Append(FILE_PATH_LITERAL("base")); - test_data_path = test_data_path.Append(FILE_PATH_LITERAL("test")); - test_data_path = test_data_path.Append(FILE_PATH_LITERAL("data")); - if (!PathExists(test_data_path)) // We don't want to create this. - return false; - *result = test_data_path; - return true; - } - default: - return false; - } -} - -} // namespace base diff --git a/base/base_paths.h b/base/base_paths.h deleted file mode 100644 index ef6aa82..0000000 --- a/base/base_paths.h +++ /dev/null @@ -1,54 +0,0 @@ -// 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. - -#ifndef BASE_BASE_PATHS_H_ -#define BASE_BASE_PATHS_H_ - -// This file declares path keys for the base module. These can be used with -// the PathService to access various special directories and files. - -#include "build/build_config.h" - -#if defined(OS_WIN) -#include "base/base_paths_win.h" -#elif defined(OS_MACOSX) -#include "base/base_paths_mac.h" -#elif defined(OS_ANDROID) -#include "base/base_paths_android.h" -#endif - -#if defined(OS_POSIX) -#include "base/base_paths_posix.h" -#endif - -namespace base { - -enum BasePathKey { - PATH_START = 0, - - DIR_CURRENT, // Current directory. - DIR_EXE, // Directory containing FILE_EXE. - DIR_MODULE, // Directory containing FILE_MODULE. - DIR_TEMP, // Temporary directory. - DIR_HOME, // User's root home directory. On Windows this will look - // like "C:\Users\<user>" which isn't necessarily a great - // place to put files. - FILE_EXE, // Path and filename of the current executable. - FILE_MODULE, // Path and filename of the module containing the code for - // the PathService (which could differ from FILE_EXE if the - // PathService were compiled into a shared object, for - // example). - DIR_SOURCE_ROOT, // Returns the root of the source tree. This key is useful - // for tests that need to locate various resources. It - // should not be used outside of test code. - DIR_USER_DESKTOP, // The current user's Desktop. - - DIR_TEST_DATA, // Used only for testing. - - PATH_END -}; - -} // namespace base - -#endif // BASE_BASE_PATHS_H_ diff --git a/base/base_paths_posix.cc b/base/base_paths_posix.cc deleted file mode 100644 index d291e71..0000000 --- a/base/base_paths_posix.cc +++ /dev/null @@ -1,123 +0,0 @@ -// 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. - -// Defines base::PathProviderPosix, default path provider on POSIX OSes that -// don't have their own base_paths_OS.cc implementation (i.e. all but Mac and -// Android). - -#include "base/base_paths.h" - -#include <limits.h> -#include <stddef.h> - -#include <memory> -#include <ostream> -#include <string> - -#include "base/environment.h" -#include "base/files/file_path.h" -#include "base/files/file_util.h" -#include "base/logging.h" -// Unused. TODO(hidehiko): Introduce a stub file when merging into libchrome. -// #include "base/nix/xdg_util.h" -#include "base/path_service.h" -#include "base/process/process_metrics.h" -#include "build/build_config.h" - -#if defined(OS_FREEBSD) -#include <sys/param.h> -#include <sys/sysctl.h> -#elif defined(OS_SOLARIS) -#include <stdlib.h> -#endif - -namespace base { - -bool PathProviderPosix(int key, FilePath* result) { - FilePath path; - switch (key) { - case FILE_EXE: - case FILE_MODULE: { // TODO(evanm): is this correct? -#if defined(OS_LINUX) - FilePath bin_dir; - if (!ReadSymbolicLink(FilePath(kProcSelfExe), &bin_dir)) { - NOTREACHED() << "Unable to resolve " << kProcSelfExe << "."; - return false; - } - *result = bin_dir; - return true; -#elif defined(OS_FREEBSD) - int name[] = { CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1 }; - char bin_dir[PATH_MAX + 1]; - size_t length = sizeof(bin_dir); - // Upon return, |length| is the number of bytes written to |bin_dir| - // including the string terminator. - int error = sysctl(name, 4, bin_dir, &length, NULL, 0); - if (error < 0 || length <= 1) { - NOTREACHED() << "Unable to resolve path."; - return false; - } - *result = FilePath(FilePath::StringType(bin_dir, length - 1)); - return true; -#elif defined(OS_SOLARIS) - char bin_dir[PATH_MAX + 1]; - if (realpath(getexecname(), bin_dir) == NULL) { - NOTREACHED() << "Unable to resolve " << getexecname() << "."; - return false; - } - *result = FilePath(bin_dir); - return true; -#elif defined(OS_OPENBSD) - // There is currently no way to get the executable path on OpenBSD - char* cpath; - if ((cpath = getenv("CHROME_EXE_PATH")) != NULL) - *result = FilePath(cpath); - else - *result = FilePath("/usr/local/chrome/chrome"); - return true; -#endif - } -// Following paths are not supported in libchrome/libmojo. -#if 0 - case DIR_SOURCE_ROOT: { - // Allow passing this in the environment, for more flexibility in build - // tree configurations (sub-project builds, gyp --output_dir, etc.) - std::unique_ptr<Environment> env(Environment::Create()); - std::string cr_source_root; - if (env->GetVar("CR_SOURCE_ROOT", &cr_source_root)) { - path = FilePath(cr_source_root); - if (PathExists(path)) { - *result = path; - return true; - } - DLOG(WARNING) << "CR_SOURCE_ROOT is set, but it appears to not " - << "point to a directory."; - } - // On POSIX, unit tests execute two levels deep from the source root. - // For example: out/{Debug|Release}/net_unittest - if (PathService::Get(DIR_EXE, &path)) { - *result = path.DirName().DirName(); - return true; - } - - DLOG(ERROR) << "Couldn't find your source root. " - << "Try running from your chromium/src directory."; - return false; - } - case DIR_USER_DESKTOP: - *result = nix::GetXDGUserDirectory("DESKTOP", "Desktop"); - return true; - case DIR_CACHE: { - std::unique_ptr<Environment> env(Environment::Create()); - FilePath cache_dir( - nix::GetXDGDirectory(env.get(), "XDG_CACHE_HOME", ".cache")); - *result = cache_dir; - return true; - } -#endif - } - return false; -} - -} // namespace base diff --git a/base/base_paths_posix.h b/base/base_paths_posix.h deleted file mode 100644 index ef002ae..0000000 --- a/base/base_paths_posix.h +++ /dev/null @@ -1,27 +0,0 @@ -// 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. - -#ifndef BASE_BASE_PATHS_POSIX_H_ -#define BASE_BASE_PATHS_POSIX_H_ - -// This file declares windows-specific path keys for the base module. -// These can be used with the PathService to access various special -// directories and files. - -namespace base { - -enum { - PATH_POSIX_START = 400, - - DIR_CACHE, // Directory where to put cache data. Note this is - // *not* where the browser cache lives, but the - // browser cache can be a subdirectory. - // This is $XDG_CACHE_HOME on Linux and - // ~/Library/Caches on Mac. - PATH_POSIX_END -}; - -} // namespace base - -#endif // BASE_BASE_PATHS_POSIX_H_ diff --git a/base/i18n/base_i18n_export.h b/base/i18n/base_i18n_export.h deleted file mode 100644 index e8a2add..0000000 --- a/base/i18n/base_i18n_export.h +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) 2011 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. - -#ifndef BASE_I18N_BASE_I18N_EXPORT_H_ -#define BASE_I18N_BASE_I18N_EXPORT_H_ - -#if defined(COMPONENT_BUILD) -#if defined(WIN32) - -#if defined(BASE_I18N_IMPLEMENTATION) -#define BASE_I18N_EXPORT __declspec(dllexport) -#else -#define BASE_I18N_EXPORT __declspec(dllimport) -#endif // defined(BASE_I18N_IMPLEMENTATION) - -#else // defined(WIN32) -#if defined(BASE_I18N_IMPLEMENTATION) -#define BASE_I18N_EXPORT __attribute__((visibility("default"))) -#else -#define BASE_I18N_EXPORT -#endif -#endif - -#else // defined(COMPONENT_BUILD) -#define BASE_I18N_EXPORT -#endif - -#endif // BASE_I18N_BASE_I18N_EXPORT_H_ diff --git a/base/i18n/rtl.h b/base/i18n/rtl.h deleted file mode 100644 index df15cd0..0000000 --- a/base/i18n/rtl.h +++ /dev/null @@ -1,155 +0,0 @@ -// Copyright (c) 2011 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. - -#ifndef BASE_I18N_RTL_H_ -#define BASE_I18N_RTL_H_ - -#include <string> - -#include "base/compiler_specific.h" -#include "base/i18n/base_i18n_export.h" -#include "base/strings/string16.h" -#include "build/build_config.h" - -namespace base { - -class FilePath; - -namespace i18n { - -const char16 kRightToLeftMark = 0x200F; -const char16 kLeftToRightMark = 0x200E; -const char16 kLeftToRightEmbeddingMark = 0x202A; -const char16 kRightToLeftEmbeddingMark = 0x202B; -const char16 kPopDirectionalFormatting = 0x202C; -const char16 kLeftToRightOverride = 0x202D; -const char16 kRightToLeftOverride = 0x202E; - -// Locale.java mirrored this enum TextDirection. Please keep in sync. -enum TextDirection { - UNKNOWN_DIRECTION = 0, - RIGHT_TO_LEFT = 1, - LEFT_TO_RIGHT = 2, - TEXT_DIRECTION_MAX = LEFT_TO_RIGHT, -}; - -// Get the locale that the currently running process has been configured to use. -// The return value is of the form language[-country] (e.g., en-US) where the -// language is the 2 or 3 letter code from ISO-639. -BASE_I18N_EXPORT std::string GetConfiguredLocale(); - -// Canonicalize a string (eg. a POSIX locale string) to a Chrome locale name. -BASE_I18N_EXPORT std::string GetCanonicalLocale(const std::string& locale); - -// Sets the default locale of ICU. -// Once the application locale of Chrome in GetApplicationLocale is determined, -// the default locale of ICU need to be changed to match the application locale -// so that ICU functions work correctly in a locale-dependent manner. -// This is handy in that we don't have to call GetApplicationLocale() -// everytime we call locale-dependent ICU APIs as long as we make sure -// that this is called before any locale-dependent API is called. -BASE_I18N_EXPORT void SetICUDefaultLocale(const std::string& locale_string); - -// Returns true if the application text direction is right-to-left. -BASE_I18N_EXPORT bool IsRTL(); - -// Returns whether the text direction for the default ICU locale is RTL. This -// assumes that SetICUDefaultLocale has been called to set the default locale to -// the UI locale of Chrome. -// NOTE: Generally, you should call IsRTL() instead of this. -BASE_I18N_EXPORT bool ICUIsRTL(); - -// Returns the text direction for |locale_name|. -// As a startup optimization, this method checks the locale against a list of -// Chrome-supported RTL locales. -BASE_I18N_EXPORT TextDirection -GetTextDirectionForLocaleInStartUp(const char* locale_name); - -// Returns the text direction for |locale_name|. -BASE_I18N_EXPORT TextDirection GetTextDirectionForLocale( - const char* locale_name); - -// Given the string in |text|, returns the directionality of the first or last -// character with strong directionality in the string. If no character in the -// text has strong directionality, LEFT_TO_RIGHT is returned. The Bidi -// character types L, LRE, LRO, R, AL, RLE, and RLO are considered as strong -// directionality characters. Please refer to http://unicode.org/reports/tr9/ -// for more information. -BASE_I18N_EXPORT TextDirection GetFirstStrongCharacterDirection( - const string16& text); -BASE_I18N_EXPORT TextDirection GetLastStrongCharacterDirection( - const string16& text); - -// Given the string in |text|, returns LEFT_TO_RIGHT or RIGHT_TO_LEFT if all the -// strong directionality characters in the string are of the same -// directionality. It returns UNKNOWN_DIRECTION if the string contains a mix of -// LTR and RTL strong directionality characters. Defaults to LEFT_TO_RIGHT if -// the string does not contain directionality characters. Please refer to -// http://unicode.org/reports/tr9/ for more information. -BASE_I18N_EXPORT TextDirection GetStringDirection(const string16& text); - -// Given the string in |text|, this function modifies the string in place with -// the appropriate Unicode formatting marks that mark the string direction -// (either left-to-right or right-to-left). The function checks both the current -// locale and the contents of the string in order to determine the direction of -// the returned string. The function returns true if the string in |text| was -// properly adjusted. -// -// Certain LTR strings are not rendered correctly when the context is RTL. For -// example, the string "Foo!" will appear as "!Foo" if it is rendered as is in -// an RTL context. Calling this function will make sure the returned localized -// string is always treated as a right-to-left string. This is done by -// inserting certain Unicode formatting marks into the returned string. -// -// ** Notes about the Windows version of this function: -// TODO(idana) bug 6806: this function adjusts the string in question only -// if the current locale is right-to-left. The function does not take care of -// the opposite case (an RTL string displayed in an LTR context) since -// adjusting the string involves inserting Unicode formatting characters that -// Windows does not handle well unless right-to-left language support is -// installed. Since the English version of Windows doesn't have right-to-left -// language support installed by default, inserting the direction Unicode mark -// results in Windows displaying squares. -BASE_I18N_EXPORT bool AdjustStringForLocaleDirection(string16* text); - -// Undoes the actions of the above function (AdjustStringForLocaleDirection). -BASE_I18N_EXPORT bool UnadjustStringForLocaleDirection(string16* text); - -// Returns true if the string contains at least one character with strong right -// to left directionality; that is, a character with either R or AL Unicode -// BiDi character type. -BASE_I18N_EXPORT bool StringContainsStrongRTLChars(const string16& text); - -// Wraps a string with an LRE-PDF pair which essentialy marks the string as a -// Left-To-Right string. Doing this is useful in order to make sure LTR -// strings are rendered properly in an RTL context. -BASE_I18N_EXPORT void WrapStringWithLTRFormatting(string16* text); - -// Wraps a string with an RLE-PDF pair which essentialy marks the string as a -// Right-To-Left string. Doing this is useful in order to make sure RTL -// strings are rendered properly in an LTR context. -BASE_I18N_EXPORT void WrapStringWithRTLFormatting(string16* text); - -// Wraps file path to get it to display correctly in RTL UI. All filepaths -// should be passed through this function before display in UI for RTL locales. -BASE_I18N_EXPORT void WrapPathWithLTRFormatting(const FilePath& path, - string16* rtl_safe_path); - -// Return the string in |text| wrapped with LRE (Left-To-Right Embedding) and -// PDF (Pop Directional Formatting) marks, if needed for UI display purposes. -BASE_I18N_EXPORT string16 GetDisplayStringInLTRDirectionality( - const string16& text) WARN_UNUSED_RESULT; - -// Strip the beginning (U+202A..U+202B, U+202D..U+202E) and/or ending (U+202C) -// explicit bidi control characters from |text|, if there are any. Otherwise, -// return the text itself. Explicit bidi control characters display and have -// semantic effect. They can be deleted so they might not always appear in a -// pair. -BASE_I18N_EXPORT string16 StripWrappingBidiControlCharacters( - const string16& text) WARN_UNUSED_RESULT; - -} // namespace i18n -} // namespace base - -#endif // BASE_I18N_RTL_H_ diff --git a/base/path_service.cc b/base/path_service.cc deleted file mode 100644 index 1b9d394..0000000 --- a/base/path_service.cc +++ /dev/null @@ -1,329 +0,0 @@ -// 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 "base/path_service.h" - -#if defined(OS_WIN) -#include <windows.h> -#include <shellapi.h> -#include <shlobj.h> -#endif - -#include "base/containers/hash_tables.h" -#include "base/files/file_path.h" -#include "base/files/file_util.h" -#include "base/logging.h" -#include "base/synchronization/lock.h" -#include "build/build_config.h" - -namespace base { - -bool PathProvider(int key, FilePath* result); - -#if defined(OS_WIN) -bool PathProviderWin(int key, FilePath* result); -#elif defined(OS_MACOSX) -bool PathProviderMac(int key, FilePath* result); -#elif defined(OS_ANDROID) -bool PathProviderAndroid(int key, FilePath* result); -#elif defined(OS_POSIX) -// PathProviderPosix is the default path provider on POSIX OSes other than -// Mac and Android. -bool PathProviderPosix(int key, FilePath* result); -#endif - -namespace { - -typedef hash_map<int, FilePath> PathMap; - -// We keep a linked list of providers. In a debug build we ensure that no two -// providers claim overlapping keys. -struct Provider { - PathService::ProviderFunc func; - struct Provider* next; -#ifndef NDEBUG - int key_start; - int key_end; -#endif - bool is_static; -}; - -Provider base_provider = { - PathProvider, - NULL, -#ifndef NDEBUG - PATH_START, - PATH_END, -#endif - true -}; - -#if defined(OS_WIN) -Provider base_provider_win = { - PathProviderWin, - &base_provider, -#ifndef NDEBUG - PATH_WIN_START, - PATH_WIN_END, -#endif - true -}; -#endif - -#if defined(OS_MACOSX) -Provider base_provider_mac = { - PathProviderMac, - &base_provider, -#ifndef NDEBUG - PATH_MAC_START, - PATH_MAC_END, -#endif - true -}; -#endif - -#if defined(OS_ANDROID) -Provider base_provider_android = { - PathProviderAndroid, - &base_provider, -#ifndef NDEBUG - PATH_ANDROID_START, - PATH_ANDROID_END, -#endif - true -}; -#endif - -#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) -Provider base_provider_posix = { - PathProviderPosix, - &base_provider, -#ifndef NDEBUG - PATH_POSIX_START, - PATH_POSIX_END, -#endif - true -}; -#endif - - -struct PathData { - Lock lock; - PathMap cache; // Cache mappings from path key to path value. - PathMap overrides; // Track path overrides. - Provider* providers; // Linked list of path service providers. - bool cache_disabled; // Don't use cache if true; - - PathData() : cache_disabled(false) { -#if defined(OS_WIN) - providers = &base_provider_win; -#elif defined(OS_MACOSX) - providers = &base_provider_mac; -#elif defined(OS_ANDROID) - providers = &base_provider_android; -#elif defined(OS_POSIX) - providers = &base_provider_posix; -#endif - } -}; - -static PathData* GetPathData() { - static auto* path_data = new PathData(); - return path_data; -} - -// Tries to find |key| in the cache. |path_data| should be locked by the caller! -bool LockedGetFromCache(int key, const PathData* path_data, FilePath* result) { - if (path_data->cache_disabled) - return false; - // check for a cached version - PathMap::const_iterator it = path_data->cache.find(key); - if (it != path_data->cache.end()) { - *result = it->second; - return true; - } - return false; -} - -// Tries to find |key| in the overrides map. |path_data| should be locked by the -// caller! -bool LockedGetFromOverrides(int key, PathData* path_data, FilePath* result) { - // check for an overridden version. - PathMap::const_iterator it = path_data->overrides.find(key); - if (it != path_data->overrides.end()) { - if (!path_data->cache_disabled) - path_data->cache[key] = it->second; - *result = it->second; - return true; - } - return false; -} - -} // namespace - -// TODO(brettw): this function does not handle long paths (filename > MAX_PATH) -// characters). This isn't supported very well by Windows right now, so it is -// moot, but we should keep this in mind for the future. -// static -bool PathService::Get(int key, FilePath* result) { - PathData* path_data = GetPathData(); - DCHECK(path_data); - DCHECK(result); - DCHECK_GE(key, DIR_CURRENT); - - // special case the current directory because it can never be cached - if (key == DIR_CURRENT) - return GetCurrentDirectory(result); - - Provider* provider = NULL; - { - AutoLock scoped_lock(path_data->lock); - if (LockedGetFromCache(key, path_data, result)) - return true; - - if (LockedGetFromOverrides(key, path_data, result)) - return true; - - // Get the beginning of the list while it is still locked. - provider = path_data->providers; - } - - FilePath path; - - // Iterating does not need the lock because only the list head might be - // modified on another thread. - while (provider) { - if (provider->func(key, &path)) - break; - DCHECK(path.empty()) << "provider should not have modified path"; - provider = provider->next; - } - - if (path.empty()) - return false; - - if (path.ReferencesParent()) { - // Make sure path service never returns a path with ".." in it. - path = MakeAbsoluteFilePath(path); - if (path.empty()) - return false; - } - *result = path; - - AutoLock scoped_lock(path_data->lock); - if (!path_data->cache_disabled) - path_data->cache[key] = path; - - return true; -} - -// static -bool PathService::Override(int key, const FilePath& path) { - // Just call the full function with true for the value of |create|, and - // assume that |path| may not be absolute yet. - return OverrideAndCreateIfNeeded(key, path, false, true); -} - -// static -bool PathService::OverrideAndCreateIfNeeded(int key, - const FilePath& path, - bool is_absolute, - bool create) { - PathData* path_data = GetPathData(); - DCHECK(path_data); - DCHECK_GT(key, DIR_CURRENT) << "invalid path key"; - - FilePath file_path = path; - - // For some locations this will fail if called from inside the sandbox there- - // fore we protect this call with a flag. - if (create) { - // Make sure the directory exists. We need to do this before we translate - // this to the absolute path because on POSIX, MakeAbsoluteFilePath fails - // if called on a non-existent path. - if (!PathExists(file_path) && !CreateDirectory(file_path)) - return false; - } - - // We need to have an absolute path. - if (!is_absolute) { - file_path = MakeAbsoluteFilePath(file_path); - if (file_path.empty()) - return false; - } - DCHECK(file_path.IsAbsolute()); - - AutoLock scoped_lock(path_data->lock); - - // Clear the cache now. Some of its entries could have depended - // on the value we are overriding, and are now out of sync with reality. - path_data->cache.clear(); - - path_data->overrides[key] = file_path; - - return true; -} - -// static -bool PathService::RemoveOverride(int key) { - PathData* path_data = GetPathData(); - DCHECK(path_data); - - AutoLock scoped_lock(path_data->lock); - - if (path_data->overrides.find(key) == path_data->overrides.end()) - return false; - - // Clear the cache now. Some of its entries could have depended on the value - // we are going to remove, and are now out of sync. - path_data->cache.clear(); - - path_data->overrides.erase(key); - - return true; -} - -// static -void PathService::RegisterProvider(ProviderFunc func, int key_start, - int key_end) { - PathData* path_data = GetPathData(); - DCHECK(path_data); - DCHECK_GT(key_end, key_start); - - Provider* p; - - p = new Provider; - p->is_static = false; - p->func = func; -#ifndef NDEBUG - p->key_start = key_start; - p->key_end = key_end; -#endif - - AutoLock scoped_lock(path_data->lock); - -#ifndef NDEBUG - Provider *iter = path_data->providers; - while (iter) { - DCHECK(key_start >= iter->key_end || key_end <= iter->key_start) << - "path provider collision"; - iter = iter->next; - } -#endif - - p->next = path_data->providers; - path_data->providers = p; -} - -// static -void PathService::DisableCache() { - PathData* path_data = GetPathData(); - DCHECK(path_data); - - AutoLock scoped_lock(path_data->lock); - path_data->cache.clear(); - path_data->cache_disabled = true; -} - -} // namespace base diff --git a/base/path_service.h b/base/path_service.h deleted file mode 100644 index c7f1abe..0000000 --- a/base/path_service.h +++ /dev/null @@ -1,97 +0,0 @@ -// 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. - -#ifndef BASE_PATH_SERVICE_H_ -#define BASE_PATH_SERVICE_H_ - -#include <string> - -#include "base/base_export.h" -#include "base/base_paths.h" -#include "base/gtest_prod_util.h" -#include "build/build_config.h" - -namespace base { - -class FilePath; -class ScopedPathOverride; - -// The path service is a global table mapping keys to file system paths. It is -// OK to use this service from multiple threads. -// -class BASE_EXPORT PathService { - public: - // Retrieves a path to a special directory or file and places it into the - // string pointed to by 'path'. If you ask for a directory it is guaranteed - // to NOT have a path separator at the end. For example, "c:\windows\temp" - // Directories are also guaranteed to exist when this function succeeds. - // - // Returns true if the directory or file was successfully retrieved. On - // failure, 'path' will not be changed. - static bool Get(int key, FilePath* path); - - // Overrides the path to a special directory or file. This cannot be used to - // change the value of DIR_CURRENT, but that should be obvious. Also, if the - // path specifies a directory that does not exist, the directory will be - // created by this method. This method returns true if successful. - // - // If the given path is relative, then it will be resolved against - // DIR_CURRENT. - // - // WARNING: Consumers of PathService::Get may expect paths to be constant - // over the lifetime of the app, so this method should be used with caution. - // - // Unit tests generally should use ScopedPathOverride instead. Overrides from - // one test should not carry over to another. - static bool Override(int key, const FilePath& path); - - // This function does the same as PathService::Override but it takes extra - // parameters: - // - |is_absolute| indicates that |path| has already been expanded into an - // absolute path, otherwise MakeAbsoluteFilePath() will be used. This is - // useful to override paths that may not exist yet, since MakeAbsoluteFilePath - // fails for those. Note that MakeAbsoluteFilePath also expands symbolic - // links, even if path.IsAbsolute() is already true. - // - |create| guides whether the directory to be overriden must - // be created in case it doesn't exist already. - static bool OverrideAndCreateIfNeeded(int key, - const FilePath& path, - bool is_absolute, - bool create); - - // To extend the set of supported keys, you can register a path provider, - // which is just a function mirroring PathService::Get. The ProviderFunc - // returns false if it cannot provide a non-empty path for the given key. - // Otherwise, true is returned. - // - // WARNING: This function could be called on any thread from which the - // PathService is used, so a the ProviderFunc MUST BE THREADSAFE. - // - typedef bool (*ProviderFunc)(int, FilePath*); - - // Call to register a path provider. You must specify the range "[key_start, - // key_end)" of supported path keys. - static void RegisterProvider(ProviderFunc provider, - int key_start, - int key_end); - - // Disable internal cache. - static void DisableCache(); - - private: - friend class ScopedPathOverride; - FRIEND_TEST_ALL_PREFIXES(PathServiceTest, RemoveOverride); - - // Removes an override for a special directory or file. Returns true if there - // was an override to remove or false if none was present. - // NOTE: This function is intended to be used by tests only! - static bool RemoveOverride(int key); -}; - -} // namespace base - -// TODO(brettw) Convert all callers to using the base namespace and remove this. -using base::PathService; - -#endif // BASE_PATH_SERVICE_H_ diff --git a/base/unguessable_token.cc b/base/unguessable_token.cc deleted file mode 100644 index cd9830e..0000000 --- a/base/unguessable_token.cc +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2016 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 "base/unguessable_token.h" - -#include "base/format_macros.h" -#include "base/rand_util.h" -#include "base/strings/stringprintf.h" - -namespace base { - -UnguessableToken::UnguessableToken(uint64_t high, uint64_t low) - : high_(high), low_(low) {} - -std::string UnguessableToken::ToString() const { - return base::StringPrintf("(%08" PRIX64 "%08" PRIX64 ")", high_, low_); -} - -// static -UnguessableToken UnguessableToken::Create() { - UnguessableToken token; - // Use base::RandBytes instead of crypto::RandBytes, because crypto calls the - // base version directly, and to prevent the dependency from base/ to crypto/. - base::RandBytes(&token, sizeof(token)); - return token; -} - -// static -UnguessableToken UnguessableToken::Deserialize(uint64_t high, uint64_t low) { - // Receiving a zeroed out UnguessableToken from another process means that it - // was never initialized via Create(). Treat this case as a security issue. - DCHECK(!(high == 0 && low == 0)); - return UnguessableToken(high, low); -} - -std::ostream& operator<<(std::ostream& out, const UnguessableToken& token) { - return out << token.ToString(); -} - -} // namespace base diff --git a/base/unguessable_token.h b/base/unguessable_token.h deleted file mode 100644 index 9f38783..0000000 --- a/base/unguessable_token.h +++ /dev/null @@ -1,103 +0,0 @@ -// Copyright 2016 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. - -#ifndef BASE_UNGUESSABLE_TOKEN_H_ -#define BASE_UNGUESSABLE_TOKEN_H_ - -#include <stdint.h> -#include <string.h> -#include <iosfwd> -#include <tuple> - -#include "base/base_export.h" -#include "base/hash.h" -#include "base/logging.h" - -namespace base { - -struct UnguessableTokenHash; - -// A UnguessableToken is an 128-bit token generated from a cryptographically -// strong random source. -// -// UnguessableToken should be used when a sensitive ID needs to be unguessable, -// and is shared across processes. It can be used as part of a larger aggregate -// type, or as an ID in and of itself. -// -// Use Create() for creating new UnguessableTokens. -// -// NOTE: It is illegal to send empty UnguessableTokens across processes, and -// sending/receiving empty tokens should be treated as a security issue. -// If there is a valid scenario for sending "no token" across processes, -// base::Optional should be used instead of an empty token. -class BASE_EXPORT UnguessableToken { - public: - // Create a unique UnguessableToken. - static UnguessableToken Create(); - - // Return a UnguessableToken built from the high/low bytes provided. - // It should only be used in deserialization scenarios. - // - // NOTE: If the deserialized token is empty, it means that it was never - // initialized via Create(). This is a security issue, and should be handled. - static UnguessableToken Deserialize(uint64_t high, uint64_t low); - - // Creates an empty UnguessableToken. - // Assign to it with Create() before using it. - constexpr UnguessableToken() = default; - - // NOTE: Serializing an empty UnguessableToken is an illegal operation. - uint64_t GetHighForSerialization() const { - DCHECK(!is_empty()); - return high_; - }; - - // NOTE: Serializing an empty UnguessableToken is an illegal operation. - uint64_t GetLowForSerialization() const { - DCHECK(!is_empty()); - return low_; - } - - bool is_empty() const { return high_ == 0 && low_ == 0; } - - std::string ToString() const; - - explicit operator bool() const { return !is_empty(); } - - bool operator<(const UnguessableToken& other) const { - return std::tie(high_, low_) < std::tie(other.high_, other.low_); - } - - bool operator==(const UnguessableToken& other) const { - return high_ == other.high_ && low_ == other.low_; - } - - bool operator!=(const UnguessableToken& other) const { - return !(*this == other); - } - - private: - friend struct UnguessableTokenHash; - UnguessableToken(uint64_t high, uint64_t low); - - // Note: Two uint64_t are used instead of uint8_t[16], in order to have a - // simpler ToString() and is_empty(). - uint64_t high_ = 0; - uint64_t low_ = 0; -}; - -BASE_EXPORT std::ostream& operator<<(std::ostream& out, - const UnguessableToken& token); - -// For use in std::unordered_map. -struct UnguessableTokenHash { - size_t operator()(const base::UnguessableToken& token) const { - DCHECK(token); - return base::HashInts64(token.high_, token.low_); - } -}; - -} // namespace base - -#endif // BASE_UNGUESSABLE_TOKEN_H_ diff --git a/device/bluetooth/bluetooth_advertisement.cc b/device/bluetooth/bluetooth_advertisement.cc deleted file mode 100644 index 05b0e52..0000000 --- a/device/bluetooth/bluetooth_advertisement.cc +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2015 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 "device/bluetooth/bluetooth_advertisement.h" - -namespace device { - -BluetoothAdvertisement::Data::Data(AdvertisementType type) - : type_(type), include_tx_power_(false) { -} - -BluetoothAdvertisement::Data::~Data() { -} - -BluetoothAdvertisement::Data::Data() - : type_(ADVERTISEMENT_TYPE_BROADCAST), include_tx_power_(false) { -} - -void BluetoothAdvertisement::AddObserver( - BluetoothAdvertisement::Observer* observer) { - CHECK(observer); - observers_.AddObserver(observer); -} - -void BluetoothAdvertisement::RemoveObserver( - BluetoothAdvertisement::Observer* observer) { - CHECK(observer); - observers_.RemoveObserver(observer); -} - -BluetoothAdvertisement::BluetoothAdvertisement() { -} -BluetoothAdvertisement::~BluetoothAdvertisement() { -} - -} // namespace device diff --git a/device/bluetooth/bluetooth_advertisement.h b/device/bluetooth/bluetooth_advertisement.h deleted file mode 100644 index 412baa7..0000000 --- a/device/bluetooth/bluetooth_advertisement.h +++ /dev/null @@ -1,152 +0,0 @@ -// Copyright 2015 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. - -#ifndef DEVICE_BLUETOOTH_BLUETOOTH_ADVERTISEMENT_H_ -#define DEVICE_BLUETOOTH_BLUETOOTH_ADVERTISEMENT_H_ - -#include <stdint.h> - -#include <map> -#include <memory> -#include <string> -#include <utility> -#include <vector> - -#include "base/callback.h" -#include "base/macros.h" -#include "base/memory/ref_counted.h" -#include "base/observer_list.h" -#include "device/bluetooth/bluetooth_export.h" - -namespace device { - -// BluetoothAdvertisement represents an advertisement which advertises over the -// LE channel during its lifetime. -class DEVICE_BLUETOOTH_EXPORT BluetoothAdvertisement - : public base::RefCounted<BluetoothAdvertisement> { - public: - // Possible types of error raised while registering or unregistering - // advertisements. - enum ErrorCode { - ERROR_UNSUPPORTED_PLATFORM, // Bluetooth advertisement not supported on - // current platform. - ERROR_ADVERTISEMENT_ALREADY_EXISTS, // An advertisement is already - // registered. - ERROR_ADVERTISEMENT_DOES_NOT_EXIST, // Unregistering an advertisement which - // is not registered. - ERROR_ADVERTISEMENT_INVALID_LENGTH, // Advertisement is not of a valid - // length. -#if defined(OS_CHROMEOS) || defined(OS_LINUX) - ERROR_INVALID_ADVERTISEMENT_INTERVAL, // Advertisement interval specified - // is out of valid range. -#endif - INVALID_ADVERTISEMENT_ERROR_CODE - }; - - // Type of advertisement. - enum AdvertisementType { - // This advertises with the type set to ADV_NONCONN_IND, which indicates - // to receivers that our device is not connectable. - ADVERTISEMENT_TYPE_BROADCAST, - // This advertises with the type set to ADV_IND or ADV_SCAN_IND, which - // indicates to receivers that our device is connectable. - ADVERTISEMENT_TYPE_PERIPHERAL - }; - - using UUIDList = std::vector<std::string>; - using ManufacturerData = std::map<uint16_t, std::vector<uint8_t>>; - using ServiceData = std::map<std::string, std::vector<uint8_t>>; - - // Structure that holds the data for an advertisement. - class DEVICE_BLUETOOTH_EXPORT Data { - public: - explicit Data(AdvertisementType type); - ~Data(); - - AdvertisementType type() { return type_; } - std::unique_ptr<UUIDList> service_uuids() { - return std::move(service_uuids_); - } - std::unique_ptr<ManufacturerData> manufacturer_data() { - return std::move(manufacturer_data_); - } - std::unique_ptr<UUIDList> solicit_uuids() { - return std::move(solicit_uuids_); - } - std::unique_ptr<ServiceData> service_data() { - return std::move(service_data_); - } - - void set_service_uuids(std::unique_ptr<UUIDList> service_uuids) { - service_uuids_ = std::move(service_uuids); - } - void set_manufacturer_data( - std::unique_ptr<ManufacturerData> manufacturer_data) { - manufacturer_data_ = std::move(manufacturer_data); - } - void set_solicit_uuids(std::unique_ptr<UUIDList> solicit_uuids) { - solicit_uuids_ = std::move(solicit_uuids); - } - void set_service_data(std::unique_ptr<ServiceData> service_data) { - service_data_ = std::move(service_data); - } - - void set_include_tx_power(bool include_tx_power) { - include_tx_power_ = include_tx_power; - } - - private: - Data(); - - AdvertisementType type_; - std::unique_ptr<UUIDList> service_uuids_; - std::unique_ptr<ManufacturerData> manufacturer_data_; - std::unique_ptr<UUIDList> solicit_uuids_; - std::unique_ptr<ServiceData> service_data_; - bool include_tx_power_; - - DISALLOW_COPY_AND_ASSIGN(Data); - }; - - // Interface for observing changes to this advertisement. - class Observer { - public: - virtual ~Observer() {} - - // Called when this advertisement is released and is no longer advertising. - virtual void AdvertisementReleased( - BluetoothAdvertisement* advertisement) = 0; - }; - - // Adds and removes observers for events for this advertisement. - void AddObserver(BluetoothAdvertisement::Observer* observer); - void RemoveObserver(BluetoothAdvertisement::Observer* observer); - - // Unregisters this advertisement. Called on destruction of this object - // automatically but can be called directly to explicitly unregister this - // object. - using SuccessCallback = base::Closure; - using ErrorCallback = base::Callback<void(ErrorCode)>; - virtual void Unregister(const SuccessCallback& success_callback, - const ErrorCallback& error_callback) = 0; - - protected: - friend class base::RefCounted<BluetoothAdvertisement>; - - BluetoothAdvertisement(); - - // The destructor will unregister this advertisement. - virtual ~BluetoothAdvertisement(); - - // List of observers interested in event notifications from us. Objects in - // |observers_| are expected to outlive a BluetoothAdvertisement object. - base::ObserverList<BluetoothAdvertisement::Observer> observers_; - - private: - DISALLOW_COPY_AND_ASSIGN(BluetoothAdvertisement); -}; - -} // namespace device - -#endif // DEVICE_BLUETOOTH_BLUETOOTH_ADVERTISEMENT_H_ diff --git a/device/bluetooth/bluetooth_common.h b/device/bluetooth/bluetooth_common.h deleted file mode 100644 index 6045980..0000000 --- a/device/bluetooth/bluetooth_common.h +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2016 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. - -#ifndef DEVICE_BLUETOOTH_BLUETOOTH_TYPES_H_ -#define DEVICE_BLUETOOTH_BLUETOOTH_TYPES_H_ - -#include "device/bluetooth/bluetooth_export.h" - -// This file is for enums and small types common to several -// parts of bluetooth. - -namespace device { - -// Devices and adapters can support a number of transports, -// and bluetooth hosts can scan for devices based on the -// transports they support. -enum BluetoothTransport : uint8_t { - BLUETOOTH_TRANSPORT_INVALID = 0x00, - // Valid transports are given as a bitset. - BLUETOOTH_TRANSPORT_CLASSIC = 0x01, - BLUETOOTH_TRANSPORT_LE = 0x02, - BLUETOOTH_TRANSPORT_DUAL = - (BLUETOOTH_TRANSPORT_CLASSIC | BLUETOOTH_TRANSPORT_LE) -}; - -// Possible values that may be returned by BluetoothDevice::GetDeviceType(), -// representing different types of bluetooth device that we support or are aware -// of decoded from the bluetooth class information. -enum class BluetoothDeviceType { - UNKNOWN, - COMPUTER, - PHONE, - MODEM, - AUDIO, - CAR_AUDIO, - VIDEO, - PERIPHERAL, - JOYSTICK, - GAMEPAD, - KEYBOARD, - MOUSE, - TABLET, - KEYBOARD_MOUSE_COMBO -}; - -} // namespace device - -#endif // DEVICE_BLUETOOTH_BLUETOOTH_TYPES_H_ diff --git a/device/bluetooth/bluetooth_export.h b/device/bluetooth/bluetooth_export.h deleted file mode 100644 index 90cc58c..0000000 --- a/device/bluetooth/bluetooth_export.h +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2014 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. - -#ifndef DEVICE_BLUETOOTH_DEVICE_BLUETOOTH_EXPORT_H_ -#define DEVICE_BLUETOOTH_DEVICE_BLUETOOTH_EXPORT_H_ - -#if defined(COMPONENT_BUILD) && defined(WIN32) - -#if defined(DEVICE_BLUETOOTH_IMPLEMENTATION) -#define DEVICE_BLUETOOTH_EXPORT __declspec(dllexport) -#else -#define DEVICE_BLUETOOTH_EXPORT __declspec(dllimport) -#endif - -#elif defined(COMPONENT_BUILD) && !defined(WIN32) - -#if defined(DEVICE_BLUETOOTH_IMPLEMENTATION) -#define DEVICE_BLUETOOTH_EXPORT __attribute__((visibility("default"))) -#else -#define DEVICE_BLUETOOTH_EXPORT -#endif - -#else -#define DEVICE_BLUETOOTH_EXPORT -#endif - -#endif // DEVICE_BLUETOOTH_DEVICE_BLUETOOTH_EXPORT_H_ diff --git a/device/bluetooth/bluetooth_uuid.cc b/device/bluetooth/bluetooth_uuid.cc deleted file mode 100644 index b35094d..0000000 --- a/device/bluetooth/bluetooth_uuid.cc +++ /dev/null @@ -1,98 +0,0 @@ -// Copyright 2014 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 "device/bluetooth/bluetooth_uuid.h" - -#include <stddef.h> - -#include "base/logging.h" -#include "base/strings/string_util.h" - -namespace device { - -namespace { - -const char kCommonUuidPostfix[] = "-0000-1000-8000-00805f9b34fb"; -const char kCommonUuidPrefix[] = "0000"; - -// Returns the canonical, 128-bit canonical, and the format of the UUID -// in |canonical|, |canonical_128|, and |format| based on |uuid|. -void GetCanonicalUuid(std::string uuid, - std::string* canonical, - std::string* canonical_128, - BluetoothUUID::Format* format) { - // Initialize the values for the failure case. - canonical->clear(); - canonical_128->clear(); - *format = BluetoothUUID::kFormatInvalid; - - if (uuid.empty()) - return; - - if (uuid.size() < 11 && - base::StartsWith(uuid, "0x", base::CompareCase::SENSITIVE)) { - uuid = uuid.substr(2); - } - - if (!(uuid.size() == 4 || uuid.size() == 8 || uuid.size() == 36)) - return; - - for (size_t i = 0; i < uuid.size(); ++i) { - if (i == 8 || i == 13 || i == 18 || i == 23) { - if (uuid[i] != '-') - return; - } else { - if (!base::IsHexDigit(uuid[i])) - return; - uuid[i] = base::ToLowerASCII(uuid[i]); - } - } - - canonical->assign(uuid); - if (uuid.size() == 4) { - canonical_128->assign(kCommonUuidPrefix + uuid + kCommonUuidPostfix); - *format = BluetoothUUID::kFormat16Bit; - } else if (uuid.size() == 8) { - canonical_128->assign(uuid + kCommonUuidPostfix); - *format = BluetoothUUID::kFormat32Bit; - } else { - canonical_128->assign(uuid); - *format = BluetoothUUID::kFormat128Bit; - } -} - -} // namespace - - -BluetoothUUID::BluetoothUUID(const std::string& uuid) { - GetCanonicalUuid(uuid, &value_, &canonical_value_, &format_); -} - -BluetoothUUID::BluetoothUUID() : format_(kFormatInvalid) { -} - -BluetoothUUID::~BluetoothUUID() { -} - -bool BluetoothUUID::IsValid() const { - return format_ != kFormatInvalid; -} - -bool BluetoothUUID::operator<(const BluetoothUUID& uuid) const { - return canonical_value_ < uuid.canonical_value_; -} - -bool BluetoothUUID::operator==(const BluetoothUUID& uuid) const { - return canonical_value_ == uuid.canonical_value_; -} - -bool BluetoothUUID::operator!=(const BluetoothUUID& uuid) const { - return canonical_value_ != uuid.canonical_value_; -} - -void PrintTo(const BluetoothUUID& uuid, std::ostream* out) { - *out << uuid.canonical_value(); -} - -} // namespace device diff --git a/device/bluetooth/bluetooth_uuid.h b/device/bluetooth/bluetooth_uuid.h deleted file mode 100644 index 8487f6a..0000000 --- a/device/bluetooth/bluetooth_uuid.h +++ /dev/null @@ -1,106 +0,0 @@ -// Copyright 2014 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. - -#ifndef DEVICE_BLUETOOTH_BLUETOOTH_UUID_H_ -#define DEVICE_BLUETOOTH_BLUETOOTH_UUID_H_ - -#include <string> - -#include "device/bluetooth/bluetooth_export.h" - -namespace device { - -// Opaque wrapper around a Bluetooth UUID. Instances of UUID represent the -// 128-bit universally unique identifiers (UUIDs) of profiles and attributes -// used in Bluetooth based communication, such as a peripheral's services, -// characteristics, and characteristic descriptors. An instance are -// constructed using a string representing 16, 32, or 128 bit UUID formats. -class DEVICE_BLUETOOTH_EXPORT BluetoothUUID { - public: - // Possible representation formats used during construction. - enum Format { - kFormatInvalid, - kFormat16Bit, - kFormat32Bit, - kFormat128Bit - }; - - // Single argument constructor. |uuid| can be a 16, 32, or 128 bit UUID - // represented as a 4, 8, or 36 character string with the following - // formats: - // xxxx - // 0xxxxx - // xxxxxxxx - // 0xxxxxxxxx - // xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx - // - // 16 and 32 bit UUIDs will be internally converted to a 128 bit UUID using - // the base UUID defined in the Bluetooth specification, hence custom UUIDs - // should be provided in the 128-bit format. If |uuid| is in an unsupported - // format, the result might be invalid. Use IsValid to check for validity - // after construction. - explicit BluetoothUUID(const std::string& uuid); - - // Default constructor does nothing. Since BluetoothUUID is copyable, this - // constructor is useful for initializing member variables and assigning a - // value to them later. The default constructor will initialize an invalid - // UUID by definition and the string accessors will return an empty string. - BluetoothUUID(); - virtual ~BluetoothUUID(); - - // Returns true, if the UUID is in a valid canonical format. - bool IsValid() const; - - // Returns the representation format of the UUID. This reflects the format - // that was provided during construction. - Format format() const { return format_; } - - // Returns the value of the UUID as a string. The representation format is - // based on what was passed in during construction. For the supported sizes, - // this representation can have the following formats: - // - 16 bit: xxxx - // - 32 bit: xxxxxxxx - // - 128 bit: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx - // where x is a lowercase hex digit. - const std::string& value() const { return value_; } - - // Returns the underlying 128-bit value as a string in the following format: - // xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx - // where x is a lowercase hex digit. - const std::string& canonical_value() const { return canonical_value_; } - - // Permit sufficient comparison to allow a UUID to be used as a key in a - // std::map. - bool operator<(const BluetoothUUID& uuid) const; - - // Equality operators. - bool operator==(const BluetoothUUID& uuid) const; - bool operator!=(const BluetoothUUID& uuid) const; - - private: - // String representation of the UUID that was used during construction. For - // the supported sizes, this representation can have the following formats: - // - 16 bit: xxxx - // - 32 bit: xxxxxxxx - // - 128 bit: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx - Format format_; - std::string value_; - - // The 128-bit string representation of the UUID. - std::string canonical_value_; -}; - -// This is required by gtest to print a readable output on test failures. -void DEVICE_BLUETOOTH_EXPORT -PrintTo(const BluetoothUUID& uuid, std::ostream* out); - -struct BluetoothUUIDHash { - size_t operator()(const device::BluetoothUUID& uuid) const { - return std::hash<std::string>()(uuid.canonical_value()); - } -}; - -} // namespace device - -#endif // DEVICE_BLUETOOTH_BLUETOOTH_UUID_H_ diff --git a/device/bluetooth/bluez/bluetooth_service_attribute_value_bluez.cc b/device/bluetooth/bluez/bluetooth_service_attribute_value_bluez.cc deleted file mode 100644 index 2c484c1..0000000 --- a/device/bluetooth/bluez/bluetooth_service_attribute_value_bluez.cc +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright 2016 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 "device/bluetooth/bluez/bluetooth_service_attribute_value_bluez.h" - -#include <utility> - -#include "base/logging.h" -#include "base/memory/ptr_util.h" - -namespace bluez { - -BluetoothServiceAttributeValueBlueZ::BluetoothServiceAttributeValueBlueZ() - : type_(NULLTYPE), size_(0), value_(base::MakeUnique<base::Value>()) {} - -BluetoothServiceAttributeValueBlueZ::BluetoothServiceAttributeValueBlueZ( - Type type, - size_t size, - std::unique_ptr<base::Value> value) - : type_(type), size_(size), value_(std::move(value)) { - CHECK_NE(type, SEQUENCE); -} - -BluetoothServiceAttributeValueBlueZ::BluetoothServiceAttributeValueBlueZ( - std::unique_ptr<Sequence> sequence) - : type_(SEQUENCE), - size_(sequence->size()), - sequence_(std::move(sequence)) {} - -BluetoothServiceAttributeValueBlueZ::BluetoothServiceAttributeValueBlueZ( - const BluetoothServiceAttributeValueBlueZ& attribute) { - *this = attribute; -} - -BluetoothServiceAttributeValueBlueZ& BluetoothServiceAttributeValueBlueZ:: -operator=(const BluetoothServiceAttributeValueBlueZ& attribute) { - if (this != &attribute) { - type_ = attribute.type_; - size_ = attribute.size_; - if (attribute.type_ == SEQUENCE) { - value_ = nullptr; - sequence_ = base::MakeUnique<Sequence>(*attribute.sequence_); - } else { - value_ = attribute.value_->CreateDeepCopy(); - sequence_ = nullptr; - } - } - return *this; -} - -BluetoothServiceAttributeValueBlueZ::~BluetoothServiceAttributeValueBlueZ() {} - -} // namespace bluez diff --git a/device/bluetooth/bluez/bluetooth_service_attribute_value_bluez.h b/device/bluetooth/bluez/bluetooth_service_attribute_value_bluez.h deleted file mode 100644 index fdd291a..0000000 --- a/device/bluetooth/bluez/bluetooth_service_attribute_value_bluez.h +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright 2016 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. - -#ifndef DEVICE_BLUETOOTH_BLUEZ_BLUETOOTH_SERVICE_ATTRIBUTE_VALUE_BLUEZ_H_ -#define DEVICE_BLUETOOTH_BLUEZ_BLUETOOTH_SERVICE_ATTRIBUTE_VALUE_BLUEZ_H_ - -#include <cstddef> -#include <memory> -#include <vector> - -#include "base/values.h" -#include "device/bluetooth/bluetooth_export.h" - -namespace bluez { - -// This class contains a Bluetooth service attribute. A service attribute is -// defined by the following fields, -// type: This is the type of the attribute. Along with being any of the -// fixed types, an attribute can also be of type sequence, which means -// that it contains an array of other attributes. -// size: This is the size of the attribute. This can be variable for each type. -// For example, a UUID can have the sizes, 2, 4 or 16 bytes. -// value: This is the raw value of the attribute. For example, for a UUID, it -// will be the string representation of the UUID. For a sequence, it -// will be an array of other attributes. -class DEVICE_BLUETOOTH_EXPORT BluetoothServiceAttributeValueBlueZ { - public: - enum Type { NULLTYPE = 0, UINT, INT, UUID, STRING, BOOL, SEQUENCE, URL }; - - using Sequence = std::vector<BluetoothServiceAttributeValueBlueZ>; - - BluetoothServiceAttributeValueBlueZ(); - BluetoothServiceAttributeValueBlueZ(Type type, - size_t size, - std::unique_ptr<base::Value> value); - explicit BluetoothServiceAttributeValueBlueZ( - std::unique_ptr<Sequence> sequence); - BluetoothServiceAttributeValueBlueZ( - const BluetoothServiceAttributeValueBlueZ& attribute); - BluetoothServiceAttributeValueBlueZ& operator=( - const BluetoothServiceAttributeValueBlueZ& attribute); - ~BluetoothServiceAttributeValueBlueZ(); - - Type type() const { return type_; } - size_t size() const { return size_; } - const Sequence& sequence() const { return *sequence_.get(); } - const base::Value& value() const { return *value_.get(); } - - private: - Type type_; - size_t size_; - std::unique_ptr<base::Value> value_; - std::unique_ptr<Sequence> sequence_; -}; - -} // namespace bluez - -#endif // DEVICE_BLUETOOTH_BLUEZ_BLUETOOTH_SERVICE_ATTRIBUTE_VALUE_BLUEZ_H_ diff --git a/ui/gfx/geometry/insets.cc b/ui/gfx/geometry/insets.cc deleted file mode 100644 index 9acc6e0..0000000 --- a/ui/gfx/geometry/insets.cc +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (c) 2009 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/geometry/insets.h" - -#include "base/strings/stringprintf.h" -#include "ui/gfx/geometry/vector2d.h" - -namespace gfx { - -std::string Insets::ToString() const { - // Print members in the same order of the constructor parameters. - return base::StringPrintf("%d,%d,%d,%d", top(), left(), bottom(), right()); -} - -Insets Insets::Offset(const gfx::Vector2d& vector) const { - return gfx::Insets(top() + vector.y(), left() + vector.x(), - bottom() - vector.y(), right() - vector.x()); -} - -} // namespace gfx diff --git a/ui/gfx/geometry/insets.h b/ui/gfx/geometry/insets.h deleted file mode 100644 index a88bae3..0000000 --- a/ui/gfx/geometry/insets.h +++ /dev/null @@ -1,130 +0,0 @@ -// 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. - -#ifndef UI_GFX_GEOMETRY_INSETS_H_ -#define UI_GFX_GEOMETRY_INSETS_H_ - -#include <string> - -#include "ui/gfx/geometry/insets_f.h" -#include "ui/gfx/gfx_export.h" - -namespace gfx { - -class Vector2d; - -// Represents the widths of the four borders or margins of an unspecified -// rectangle. An Insets stores the thickness of the top, left, bottom and right -// edges, without storing the actual size and position of the rectangle itself. -// -// This can be used to represent a space within a rectangle, by "shrinking" the -// rectangle by the inset amount on all four sides. Alternatively, it can -// represent a border that has a different thickness on each side. -class GFX_EXPORT Insets { - public: - constexpr Insets() : top_(0), left_(0), bottom_(0), right_(0) {} - constexpr explicit Insets(int all) - : top_(all), left_(all), bottom_(all), right_(all) {} - constexpr Insets(int vertical, int horizontal) - : top_(vertical), - left_(horizontal), - bottom_(vertical), - right_(horizontal) {} - constexpr Insets(int top, int left, int bottom, int right) - : top_(top), left_(left), bottom_(bottom), right_(right) {} - - constexpr int top() const { return top_; } - constexpr int left() const { return left_; } - constexpr int bottom() const { return bottom_; } - constexpr int right() const { return right_; } - - // Returns the total width taken up by the insets, which is the sum of the - // left and right insets. - constexpr int width() const { return left_ + right_; } - - // Returns the total height taken up by the insets, which is the sum of the - // top and bottom insets. - constexpr int height() const { return top_ + bottom_; } - - // Returns true if the insets are empty. - bool IsEmpty() const { return width() == 0 && height() == 0; } - - void Set(int top, int left, int bottom, int right) { - top_ = top; - left_ = left; - bottom_ = bottom; - right_ = right; - } - - bool operator==(const Insets& insets) const { - return top_ == insets.top_ && left_ == insets.left_ && - bottom_ == insets.bottom_ && right_ == insets.right_; - } - - bool operator!=(const Insets& insets) const { - return !(*this == insets); - } - - void operator+=(const Insets& insets) { - top_ += insets.top_; - left_ += insets.left_; - bottom_ += insets.bottom_; - right_ += insets.right_; - } - - void operator-=(const Insets& insets) { - top_ -= insets.top_; - left_ -= insets.left_; - bottom_ -= insets.bottom_; - right_ -= insets.right_; - } - - Insets operator-() const { - return Insets(-top_, -left_, -bottom_, -right_); - } - - Insets Scale(float scale) const { - return Scale(scale, scale); - } - - Insets Scale(float x_scale, float y_scale) const { - return Insets(static_cast<int>(top() * y_scale), - static_cast<int>(left() * x_scale), - static_cast<int>(bottom() * y_scale), - static_cast<int>(right() * x_scale)); - } - - // Adjusts the vertical and horizontal dimensions by the values described in - // |vector|. Offsetting insets before applying to a rectangle would be - // equivalent to offseting the rectangle then applying the insets. - Insets Offset(const gfx::Vector2d& vector) const; - - operator InsetsF() const { - return InsetsF(static_cast<float>(top()), static_cast<float>(left()), - static_cast<float>(bottom()), static_cast<float>(right())); - } - - // Returns a string representation of the insets. - std::string ToString() const; - - private: - int top_; - int left_; - int bottom_; - int right_; -}; - -inline Insets operator+(Insets lhs, const Insets& rhs) { - lhs += rhs; - return lhs; -} - -inline Insets operator-(Insets lhs, const Insets& rhs) { - lhs -= rhs; - return lhs; -} - -} // namespace gfx - -#endif // UI_GFX_GEOMETRY_INSETS_H_ diff --git a/ui/gfx/geometry/insets_f.cc b/ui/gfx/geometry/insets_f.cc deleted file mode 100644 index c1bc27e..0000000 --- a/ui/gfx/geometry/insets_f.cc +++ /dev/null @@ -1,16 +0,0 @@ -// 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/geometry/insets_f.h" - -#include "base/strings/stringprintf.h" - -namespace gfx { - -std::string InsetsF::ToString() const { - // Print members in the same order of the constructor parameters. - return base::StringPrintf("%f,%f,%f,%f", top(), left(), bottom(), right()); -} - -} // namespace gfx diff --git a/ui/gfx/geometry/insets_f.h b/ui/gfx/geometry/insets_f.h deleted file mode 100644 index 30c2ff2..0000000 --- a/ui/gfx/geometry/insets_f.h +++ /dev/null @@ -1,100 +0,0 @@ -// 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. - -#ifndef UI_GFX_GEOMETRY_INSETS_F_H_ -#define UI_GFX_GEOMETRY_INSETS_F_H_ - -#include <string> - -#include "ui/gfx/gfx_export.h" - -namespace gfx { - -// A floating point version of gfx::Insets. -class GFX_EXPORT InsetsF { - public: - constexpr InsetsF() : top_(0.f), left_(0.f), bottom_(0.f), right_(0.f) {} - constexpr explicit InsetsF(float all) - : top_(all), left_(all), bottom_(all), right_(all) {} - constexpr InsetsF(float vertical, float horizontal) - : top_(vertical), - left_(horizontal), - bottom_(vertical), - right_(horizontal) {} - constexpr InsetsF(float top, float left, float bottom, float right) - : top_(top), left_(left), bottom_(bottom), right_(right) {} - - constexpr float top() const { return top_; } - constexpr float left() const { return left_; } - constexpr float bottom() const { return bottom_; } - constexpr float right() const { return right_; } - - // Returns the total width taken up by the insets, which is the sum of the - // left and right insets. - constexpr float width() const { return left_ + right_; } - - // Returns the total height taken up by the insets, which is the sum of the - // top and bottom insets. - constexpr float height() const { return top_ + bottom_; } - - // Returns true if the insets are empty. - bool IsEmpty() const { return width() == 0.f && height() == 0.f; } - - void Set(float top, float left, float bottom, float right) { - top_ = top; - left_ = left; - bottom_ = bottom; - right_ = right; - } - - bool operator==(const InsetsF& insets) const { - return top_ == insets.top_ && left_ == insets.left_ && - bottom_ == insets.bottom_ && right_ == insets.right_; - } - - bool operator!=(const InsetsF& insets) const { - return !(*this == insets); - } - - void operator+=(const InsetsF& insets) { - top_ += insets.top_; - left_ += insets.left_; - bottom_ += insets.bottom_; - right_ += insets.right_; - } - - void operator-=(const InsetsF& insets) { - top_ -= insets.top_; - left_ -= insets.left_; - bottom_ -= insets.bottom_; - right_ -= insets.right_; - } - - InsetsF operator-() const { - return InsetsF(-top_, -left_, -bottom_, -right_); - } - - // Returns a string representation of the insets. - std::string ToString() const; - - private: - float top_; - float left_; - float bottom_; - float right_; -}; - -inline InsetsF operator+(InsetsF lhs, const InsetsF& rhs) { - lhs += rhs; - return lhs; -} - -inline InsetsF operator-(InsetsF lhs, const InsetsF& rhs) { - lhs -= rhs; - return lhs; -} - -} // namespace gfx - -#endif // UI_GFX_GEOMETRY_INSETS_F_H_ diff --git a/ui/gfx/geometry/point.cc b/ui/gfx/geometry/point.cc deleted file mode 100644 index 285b208..0000000 --- a/ui/gfx/geometry/point.cc +++ /dev/null @@ -1,105 +0,0 @@ -// 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/geometry/point.h" - -#include "base/strings/stringprintf.h" -#include "build/build_config.h" -#include "ui/gfx/geometry/point_conversions.h" -#include "ui/gfx/geometry/point_f.h" - -#if defined(OS_WIN) -#include <windows.h> -#elif defined(OS_IOS) -#include <CoreGraphics/CoreGraphics.h> -#elif defined(OS_MACOSX) -#include <ApplicationServices/ApplicationServices.h> -#endif - -namespace gfx { - -#if defined(OS_WIN) -Point::Point(DWORD point) { - POINTS points = MAKEPOINTS(point); - x_ = points.x; - y_ = points.y; -} - -Point::Point(const POINT& point) : x_(point.x), y_(point.y) { -} - -Point& Point::operator=(const POINT& point) { - x_ = point.x; - y_ = point.y; - return *this; -} -#elif defined(OS_MACOSX) -Point::Point(const CGPoint& point) : x_(point.x), y_(point.y) { -} -#endif - -#if defined(OS_WIN) -POINT Point::ToPOINT() const { - POINT p; - p.x = x(); - p.y = y(); - return p; -} -#elif defined(OS_MACOSX) -CGPoint Point::ToCGPoint() const { - return CGPointMake(x(), y()); -} -#endif - -void Point::SetToMin(const Point& other) { - x_ = x_ <= other.x_ ? x_ : other.x_; - y_ = y_ <= other.y_ ? y_ : other.y_; -} - -void Point::SetToMax(const Point& other) { - x_ = x_ >= other.x_ ? x_ : other.x_; - y_ = y_ >= other.y_ ? y_ : other.y_; -} - -std::string Point::ToString() const { - return base::StringPrintf("%d,%d", x(), y()); -} - -Point ScaleToCeiledPoint(const Point& point, float x_scale, float y_scale) { - if (x_scale == 1.f && y_scale == 1.f) - return point; - return ToCeiledPoint(ScalePoint(gfx::PointF(point), x_scale, y_scale)); -} - -Point ScaleToCeiledPoint(const Point& point, float scale) { - if (scale == 1.f) - return point; - return ToCeiledPoint(ScalePoint(gfx::PointF(point), scale, scale)); -} - -Point ScaleToFlooredPoint(const Point& point, float x_scale, float y_scale) { - if (x_scale == 1.f && y_scale == 1.f) - return point; - return ToFlooredPoint(ScalePoint(gfx::PointF(point), x_scale, y_scale)); -} - -Point ScaleToFlooredPoint(const Point& point, float scale) { - if (scale == 1.f) - return point; - return ToFlooredPoint(ScalePoint(gfx::PointF(point), scale, scale)); -} - -Point ScaleToRoundedPoint(const Point& point, float x_scale, float y_scale) { - if (x_scale == 1.f && y_scale == 1.f) - return point; - return ToRoundedPoint(ScalePoint(gfx::PointF(point), x_scale, y_scale)); -} - -Point ScaleToRoundedPoint(const Point& point, float scale) { - if (scale == 1.f) - return point; - return ToRoundedPoint(ScalePoint(gfx::PointF(point), scale, scale)); -} - -} // namespace gfx diff --git a/ui/gfx/geometry/point.h b/ui/gfx/geometry/point.h deleted file mode 100644 index bb248d5..0000000 --- a/ui/gfx/geometry/point.h +++ /dev/null @@ -1,148 +0,0 @@ -// 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. - -#ifndef UI_GFX_GEOMETRY_POINT_H_ -#define UI_GFX_GEOMETRY_POINT_H_ - -#include <iosfwd> -#include <string> -#include <tuple> - -#include "base/numerics/saturated_arithmetic.h" -#include "build/build_config.h" -#include "ui/gfx/geometry/vector2d.h" -#include "ui/gfx/gfx_export.h" - -#if defined(OS_WIN) -typedef unsigned long DWORD; -typedef struct tagPOINT POINT; -#elif defined(OS_MACOSX) -typedef struct CGPoint CGPoint; -#endif - -namespace gfx { - -// A point has an x and y coordinate. -class GFX_EXPORT Point { - public: - constexpr Point() : x_(0), y_(0) {} - constexpr Point(int x, int y) : x_(x), y_(y) {} -#if defined(OS_WIN) - // |point| is a DWORD value that contains a coordinate. The x-coordinate is - // the low-order short and the y-coordinate is the high-order short. This - // value is commonly acquired from GetMessagePos/GetCursorPos. - explicit Point(DWORD point); - explicit Point(const POINT& point); - Point& operator=(const POINT& point); -#elif defined(OS_MACOSX) - explicit Point(const CGPoint& point); -#endif - -#if defined(OS_WIN) - POINT ToPOINT() const; -#elif defined(OS_MACOSX) - CGPoint ToCGPoint() const; -#endif - - constexpr int x() const { return x_; } - constexpr int y() const { return y_; } - void set_x(int x) { x_ = x; } - void set_y(int y) { y_ = y; } - - void SetPoint(int x, int y) { - x_ = x; - y_ = y; - } - - void Offset(int delta_x, int delta_y) { - x_ = base::SaturatedAddition(x_, delta_x); - y_ = base::SaturatedAddition(y_, delta_y); - } - - void operator+=(const Vector2d& vector) { - x_ = base::SaturatedAddition(x_, vector.x()); - y_ = base::SaturatedAddition(y_, vector.y()); - } - - void operator-=(const Vector2d& vector) { - x_ = base::SaturatedSubtraction(x_, vector.x()); - y_ = base::SaturatedSubtraction(y_, vector.y()); - } - - void SetToMin(const Point& other); - void SetToMax(const Point& other); - - bool IsOrigin() const { return x_ == 0 && y_ == 0; } - - Vector2d OffsetFromOrigin() const { return Vector2d(x_, y_); } - - // A point is less than another point if its y-value is closer - // to the origin. If the y-values are the same, then point with - // the x-value closer to the origin is considered less than the - // other. - // This comparison is required to use Point in sets, or sorted - // vectors. - bool operator<(const Point& rhs) const { - return std::tie(y_, x_) < std::tie(rhs.y_, rhs.x_); - } - - // Returns a string representation of point. - std::string ToString() const; - - private: - int x_; - int y_; -}; - -inline bool operator==(const Point& lhs, const Point& rhs) { - return lhs.x() == rhs.x() && lhs.y() == rhs.y(); -} - -inline bool operator!=(const Point& lhs, const Point& rhs) { - return !(lhs == rhs); -} - -inline Point operator+(const Point& lhs, const Vector2d& rhs) { - Point result(lhs); - result += rhs; - return result; -} - -inline Point operator-(const Point& lhs, const Vector2d& rhs) { - Point result(lhs); - result -= rhs; - return result; -} - -inline Vector2d operator-(const Point& lhs, const Point& rhs) { - return Vector2d(base::SaturatedSubtraction(lhs.x(), rhs.x()), - base::SaturatedSubtraction(lhs.y(), rhs.y())); -} - -inline Point PointAtOffsetFromOrigin(const Vector2d& offset_from_origin) { - return Point(offset_from_origin.x(), offset_from_origin.y()); -} - -// This is declared here for use in gtest-based unit tests but is defined in -// the //ui/gfx:test_support target. Depend on that to use this in your unit -// test. This should not be used in production code - call ToString() instead. -void PrintTo(const Point& point, ::std::ostream* os); - -// Helper methods to scale a gfx::Point to a new gfx::Point. -GFX_EXPORT Point ScaleToCeiledPoint(const Point& point, - float x_scale, - float y_scale); -GFX_EXPORT Point ScaleToCeiledPoint(const Point& point, float x_scale); -GFX_EXPORT Point ScaleToFlooredPoint(const Point& point, - float x_scale, - float y_scale); -GFX_EXPORT Point ScaleToFlooredPoint(const Point& point, float x_scale); -GFX_EXPORT Point ScaleToRoundedPoint(const Point& point, - float x_scale, - float y_scale); -GFX_EXPORT Point ScaleToRoundedPoint(const Point& point, float x_scale); - -} // namespace gfx - -#endif // UI_GFX_GEOMETRY_POINT_H_ diff --git a/ui/gfx/geometry/point_conversions.cc b/ui/gfx/geometry/point_conversions.cc deleted file mode 100644 index 0613e7a..0000000 --- a/ui/gfx/geometry/point_conversions.cc +++ /dev/null @@ -1,30 +0,0 @@ -// 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/geometry/point_conversions.h" - -#include "ui/gfx/geometry/safe_integer_conversions.h" - -namespace gfx { - -Point ToFlooredPoint(const PointF& point) { - int x = ToFlooredInt(point.x()); - int y = ToFlooredInt(point.y()); - return Point(x, y); -} - -Point ToCeiledPoint(const PointF& point) { - int x = ToCeiledInt(point.x()); - int y = ToCeiledInt(point.y()); - return Point(x, y); -} - -Point ToRoundedPoint(const PointF& point) { - int x = ToRoundedInt(point.x()); - int y = ToRoundedInt(point.y()); - return Point(x, y); -} - -} // namespace gfx - diff --git a/ui/gfx/geometry/point_conversions.h b/ui/gfx/geometry/point_conversions.h deleted file mode 100644 index bfab9e4..0000000 --- a/ui/gfx/geometry/point_conversions.h +++ /dev/null @@ -1,24 +0,0 @@ -// 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. - -#ifndef UI_GFX_GEOMETRY_POINT_CONVERSIONS_H_ -#define UI_GFX_GEOMETRY_POINT_CONVERSIONS_H_ - -#include "ui/gfx/geometry/point.h" -#include "ui/gfx/geometry/point_f.h" - -namespace gfx { - -// Returns a Point with each component from the input PointF floored. -GFX_EXPORT Point ToFlooredPoint(const PointF& point); - -// Returns a Point with each component from the input PointF ceiled. -GFX_EXPORT Point ToCeiledPoint(const PointF& point); - -// Returns a Point with each component from the input PointF rounded. -GFX_EXPORT Point ToRoundedPoint(const PointF& point); - -} // namespace gfx - -#endif // UI_GFX_GEOMETRY_POINT_CONVERSIONS_H_ diff --git a/ui/gfx/geometry/point_f.cc b/ui/gfx/geometry/point_f.cc deleted file mode 100644 index 0d15394..0000000 --- a/ui/gfx/geometry/point_f.cc +++ /dev/null @@ -1,32 +0,0 @@ -// 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/geometry/point_f.h" - -#include "base/strings/stringprintf.h" - -namespace gfx { - -void PointF::SetToMin(const PointF& other) { - x_ = x_ <= other.x_ ? x_ : other.x_; - y_ = y_ <= other.y_ ? y_ : other.y_; -} - -void PointF::SetToMax(const PointF& other) { - x_ = x_ >= other.x_ ? x_ : other.x_; - y_ = y_ >= other.y_ ? y_ : other.y_; -} - -std::string PointF::ToString() const { - return base::StringPrintf("%f,%f", x(), y()); -} - -PointF ScalePoint(const PointF& p, float x_scale, float y_scale) { - PointF scaled_p(p); - scaled_p.Scale(x_scale, y_scale); - return scaled_p; -} - - -} // namespace gfx diff --git a/ui/gfx/geometry/point_f.h b/ui/gfx/geometry/point_f.h deleted file mode 100644 index 5d92b11..0000000 --- a/ui/gfx/geometry/point_f.h +++ /dev/null @@ -1,126 +0,0 @@ -// 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. - -#ifndef UI_GFX_GEOMETRY_POINT_F_H_ -#define UI_GFX_GEOMETRY_POINT_F_H_ - -#include <iosfwd> -#include <string> -#include <tuple> - -#include "ui/gfx/geometry/point.h" -#include "ui/gfx/geometry/vector2d_f.h" -#include "ui/gfx/gfx_export.h" - -namespace gfx { - -// A floating version of gfx::Point. -class GFX_EXPORT PointF { - public: - constexpr PointF() : x_(0.f), y_(0.f) {} - constexpr PointF(float x, float y) : x_(x), y_(y) {} - - constexpr explicit PointF(const Point& p) - : PointF(static_cast<float>(p.x()), static_cast<float>(p.y())) {} - - constexpr float x() const { return x_; } - constexpr float y() const { return y_; } - void set_x(float x) { x_ = x; } - void set_y(float y) { y_ = y; } - - void SetPoint(float x, float y) { - x_ = x; - y_ = y; - } - - void Offset(float delta_x, float delta_y) { - x_ += delta_x; - y_ += delta_y; - } - - void operator+=(const Vector2dF& vector) { - x_ += vector.x(); - y_ += vector.y(); - } - - void operator-=(const Vector2dF& vector) { - x_ -= vector.x(); - y_ -= vector.y(); - } - - void SetToMin(const PointF& other); - void SetToMax(const PointF& other); - - bool IsOrigin() const { return x_ == 0 && y_ == 0; } - - Vector2dF OffsetFromOrigin() const { return Vector2dF(x_, y_); } - - // A point is less than another point if its y-value is closer - // to the origin. If the y-values are the same, then point with - // the x-value closer to the origin is considered less than the - // other. - // This comparison is required to use PointF in sets, or sorted - // vectors. - bool operator<(const PointF& rhs) const { - return std::tie(y_, x_) < std::tie(rhs.y_, rhs.x_); - } - - void Scale(float scale) { - Scale(scale, scale); - } - - void Scale(float x_scale, float y_scale) { - SetPoint(x() * x_scale, y() * y_scale); - } - - // Returns a string representation of point. - std::string ToString() const; - - private: - float x_; - float y_; -}; - -inline bool operator==(const PointF& lhs, const PointF& rhs) { - return lhs.x() == rhs.x() && lhs.y() == rhs.y(); -} - -inline bool operator!=(const PointF& lhs, const PointF& rhs) { - return !(lhs == rhs); -} - -inline PointF operator+(const PointF& lhs, const Vector2dF& rhs) { - PointF result(lhs); - result += rhs; - return result; -} - -inline PointF operator-(const PointF& lhs, const Vector2dF& rhs) { - PointF result(lhs); - result -= rhs; - return result; -} - -inline Vector2dF operator-(const PointF& lhs, const PointF& rhs) { - return Vector2dF(lhs.x() - rhs.x(), lhs.y() - rhs.y()); -} - -inline PointF PointAtOffsetFromOrigin(const Vector2dF& offset_from_origin) { - return PointF(offset_from_origin.x(), offset_from_origin.y()); -} - -GFX_EXPORT PointF ScalePoint(const PointF& p, float x_scale, float y_scale); - -inline PointF ScalePoint(const PointF& p, float scale) { - return ScalePoint(p, scale, scale); -} - -// This is declared here for use in gtest-based unit tests but is defined in -// the //ui/gfx:test_support target. Depend on that to use this in your unit -// test. This should not be used in production code - call ToString() instead. -void PrintTo(const PointF& point, ::std::ostream* os); - -} // namespace gfx - -#endif // UI_GFX_GEOMETRY_POINT_F_H_ diff --git a/ui/gfx/geometry/rect.cc b/ui/gfx/geometry/rect.cc deleted file mode 100644 index b5ceda5..0000000 --- a/ui/gfx/geometry/rect.cc +++ /dev/null @@ -1,346 +0,0 @@ -// 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/geometry/rect.h" - -#include <algorithm> - -#if defined(OS_WIN) -#include <windows.h> -#elif defined(OS_IOS) -#include <CoreGraphics/CoreGraphics.h> -#elif defined(OS_MACOSX) -#include <ApplicationServices/ApplicationServices.h> -#endif - -#include "base/logging.h" -#include "base/numerics/saturated_arithmetic.h" -#include "base/strings/stringprintf.h" -#include "build/build_config.h" -#include "ui/gfx/geometry/insets.h" - -namespace gfx { - -#if defined(OS_WIN) -Rect::Rect(const RECT& r) - : origin_(r.left, r.top), - size_(std::abs(r.right - r.left), std::abs(r.bottom - r.top)) { -} -#elif defined(OS_MACOSX) -Rect::Rect(const CGRect& r) - : origin_(r.origin.x, r.origin.y), size_(r.size.width, r.size.height) { -} -#endif - -#if defined(OS_WIN) -RECT Rect::ToRECT() const { - RECT r; - r.left = x(); - r.right = right(); - r.top = y(); - r.bottom = bottom(); - return r; -} -#elif defined(OS_MACOSX) -CGRect Rect::ToCGRect() const { - return CGRectMake(x(), y(), width(), height()); -} -#endif - -void AdjustAlongAxis(int dst_origin, int dst_size, int* origin, int* size) { - *size = std::min(dst_size, *size); - if (*origin < dst_origin) - *origin = dst_origin; - else - *origin = std::min(dst_origin + dst_size, *origin + *size) - *size; -} - -} // namespace - -namespace gfx { - -// This is the per-axis heuristic for picking the most useful origin and -// width/height to represent the input range. -static void SaturatedClampRange(int min, int max, int* origin, int* span) { - if (max < min) { - *span = 0; - *origin = min; - return; - } - - int effective_span = base::SaturatedSubtraction(max, min); - int span_loss = base::SaturatedSubtraction(max, min + effective_span); - - // If the desired width is within the limits of ints, we can just - // use the simple computations to represent the range precisely. - if (span_loss == 0) { - *span = effective_span; - *origin = min; - return; - } - - // Now we have to approximate. If one of min or max is close enough - // to zero we choose to represent that one precisely. The other side is - // probably practically "infinite", so we move it. - if (base::SaturatedAbsolute(max) < std::numeric_limits<int>::max() / 2) { - // Maintain origin + span == max. - *span = effective_span; - *origin = max - effective_span; - } else if (base::SaturatedAbsolute(min) < - std::numeric_limits<int>::max() / 2) { - // Maintain origin == min. - *span = effective_span; - *origin = min; - } else { - // Both are big, so keep the center. - *span = effective_span; - *origin = min + span_loss / 2; - } -} - -void Rect::SetByBounds(int left, int top, int right, int bottom) { - int x, y; - int width, height; - SaturatedClampRange(left, right, &x, &width); - SaturatedClampRange(top, bottom, &y, &height); - origin_.SetPoint(x, y); - size_.SetSize(width, height); -} - -void Rect::Inset(const Insets& insets) { - Inset(insets.left(), insets.top(), insets.right(), insets.bottom()); -} - -void Rect::Inset(int left, int top, int right, int bottom) { - origin_ += Vector2d(left, top); - // left+right might overflow/underflow, but width() - (left+right) might - // overflow as well. - set_width(base::SaturatedSubtraction(width(), - base::SaturatedAddition(left, right))); - set_height(base::SaturatedSubtraction(height(), - base::SaturatedAddition(top, bottom))); -} - -void Rect::Offset(int horizontal, int vertical) { - origin_ += Vector2d(horizontal, vertical); - // Ensure that width and height remain valid. - set_width(width()); - set_height(height()); -} - -void Rect::operator+=(const Vector2d& offset) { - origin_ += offset; - // Ensure that width and height remain valid. - set_width(width()); - set_height(height()); -} - -void Rect::operator-=(const Vector2d& offset) { - origin_ -= offset; -} - -Insets Rect::InsetsFrom(const Rect& inner) const { - return Insets(inner.y() - y(), - inner.x() - x(), - bottom() - inner.bottom(), - right() - inner.right()); -} - -bool Rect::operator<(const Rect& other) const { - if (origin_ == other.origin_) { - if (width() == other.width()) { - return height() < other.height(); - } else { - return width() < other.width(); - } - } else { - return origin_ < other.origin_; - } -} - -bool Rect::Contains(int point_x, int point_y) const { - return (point_x >= x()) && (point_x < right()) && (point_y >= y()) && - (point_y < bottom()); -} - -bool Rect::Contains(const Rect& rect) const { - return (rect.x() >= x() && rect.right() <= right() && rect.y() >= y() && - rect.bottom() <= bottom()); -} - -bool Rect::Intersects(const Rect& rect) const { - return !(IsEmpty() || rect.IsEmpty() || rect.x() >= right() || - rect.right() <= x() || rect.y() >= bottom() || rect.bottom() <= y()); -} - -void Rect::Intersect(const Rect& rect) { - if (IsEmpty() || rect.IsEmpty()) { - SetRect(0, 0, 0, 0); // Throws away empty position. - return; - } - - int left = std::max(x(), rect.x()); - int top = std::max(y(), rect.y()); - int new_right = std::min(right(), rect.right()); - int new_bottom = std::min(bottom(), rect.bottom()); - - if (left >= new_right || top >= new_bottom) { - SetRect(0, 0, 0, 0); // Throws away empty position. - return; - } - - SetByBounds(left, top, new_right, new_bottom); -} - -void Rect::Union(const Rect& rect) { - if (IsEmpty()) { - *this = rect; - return; - } - if (rect.IsEmpty()) - return; - - SetByBounds(std::min(x(), rect.x()), std::min(y(), rect.y()), - std::max(right(), rect.right()), - std::max(bottom(), rect.bottom())); -} - -void Rect::Subtract(const Rect& rect) { - if (!Intersects(rect)) - return; - if (rect.Contains(*this)) { - SetRect(0, 0, 0, 0); - return; - } - - int rx = x(); - int ry = y(); - int rr = right(); - int rb = bottom(); - - if (rect.y() <= y() && rect.bottom() >= bottom()) { - // complete intersection in the y-direction - if (rect.x() <= x()) { - rx = rect.right(); - } else if (rect.right() >= right()) { - rr = rect.x(); - } - } else if (rect.x() <= x() && rect.right() >= right()) { - // complete intersection in the x-direction - if (rect.y() <= y()) { - ry = rect.bottom(); - } else if (rect.bottom() >= bottom()) { - rb = rect.y(); - } - } - SetByBounds(rx, ry, rr, rb); -} - -void Rect::AdjustToFit(const Rect& rect) { - int new_x = x(); - int new_y = y(); - int new_width = width(); - int new_height = height(); - AdjustAlongAxis(rect.x(), rect.width(), &new_x, &new_width); - AdjustAlongAxis(rect.y(), rect.height(), &new_y, &new_height); - SetRect(new_x, new_y, new_width, new_height); -} - -Point Rect::CenterPoint() const { - return Point(x() + width() / 2, y() + height() / 2); -} - -void Rect::ClampToCenteredSize(const Size& size) { - int new_width = std::min(width(), size.width()); - int new_height = std::min(height(), size.height()); - int new_x = x() + (width() - new_width) / 2; - int new_y = y() + (height() - new_height) / 2; - SetRect(new_x, new_y, new_width, new_height); -} - -void Rect::SplitVertically(Rect* left_half, Rect* right_half) const { - DCHECK(left_half); - DCHECK(right_half); - - left_half->SetRect(x(), y(), width() / 2, height()); - right_half->SetRect( - left_half->right(), y(), width() - left_half->width(), height()); -} - -bool Rect::SharesEdgeWith(const Rect& rect) const { - return (y() == rect.y() && height() == rect.height() && - (x() == rect.right() || right() == rect.x())) || - (x() == rect.x() && width() == rect.width() && - (y() == rect.bottom() || bottom() == rect.y())); -} - -int Rect::ManhattanDistanceToPoint(const Point& point) const { - int x_distance = - std::max<int>(0, std::max(x() - point.x(), point.x() - right())); - int y_distance = - std::max<int>(0, std::max(y() - point.y(), point.y() - bottom())); - - return x_distance + y_distance; -} - -int Rect::ManhattanInternalDistance(const Rect& rect) const { - Rect c(*this); - c.Union(rect); - - int x = std::max(0, c.width() - width() - rect.width() + 1); - int y = std::max(0, c.height() - height() - rect.height() + 1); - return x + y; -} - -std::string Rect::ToString() const { - return base::StringPrintf("%s %s", - origin().ToString().c_str(), - size().ToString().c_str()); -} - -bool Rect::ApproximatelyEqual(const Rect& rect, int tolerance) const { - return std::abs(x() - rect.x()) <= tolerance && - std::abs(y() - rect.y()) <= tolerance && - std::abs(right() - rect.right()) <= tolerance && - std::abs(bottom() - rect.bottom()) <= tolerance; -} - -Rect operator+(const Rect& lhs, const Vector2d& rhs) { - Rect result(lhs); - result += rhs; - return result; -} - -Rect operator-(const Rect& lhs, const Vector2d& rhs) { - Rect result(lhs); - result -= rhs; - return result; -} - -Rect IntersectRects(const Rect& a, const Rect& b) { - Rect result = a; - result.Intersect(b); - return result; -} - -Rect UnionRects(const Rect& a, const Rect& b) { - Rect result = a; - result.Union(b); - return result; -} - -Rect SubtractRects(const Rect& a, const Rect& b) { - Rect result = a; - result.Subtract(b); - return result; -} - -Rect BoundingRect(const Point& p1, const Point& p2) { - Rect result; - result.SetByBounds(std::min(p1.x(), p2.x()), std::min(p1.y(), p2.y()), - std::max(p1.x(), p2.x()), std::max(p1.y(), p2.y())); - return result; -} - -} // namespace gfx diff --git a/ui/gfx/geometry/rect.h b/ui/gfx/geometry/rect.h deleted file mode 100644 index 1858d44..0000000 --- a/ui/gfx/geometry/rect.h +++ /dev/null @@ -1,350 +0,0 @@ -// 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. - -// Defines a simple integer rectangle class. The containment semantics -// are array-like; that is, the coordinate (x, y) is considered to be -// contained by the rectangle, but the coordinate (x + width, y) is not. -// The class will happily let you create malformed rectangles (that is, -// rectangles with negative width and/or height), but there will be assertions -// in the operations (such as Contains()) to complain in this case. - -#ifndef UI_GFX_GEOMETRY_RECT_H_ -#define UI_GFX_GEOMETRY_RECT_H_ - -#include <cmath> -#include <iosfwd> -#include <string> - -#include "base/logging.h" -#include "build/build_config.h" -#include "ui/gfx/geometry/point.h" -#include "ui/gfx/geometry/safe_integer_conversions.h" -#include "ui/gfx/geometry/size.h" -#include "ui/gfx/geometry/vector2d.h" - -#if defined(OS_WIN) -typedef struct tagRECT RECT; -#elif defined(OS_MACOSX) -typedef struct CGRect CGRect; -#endif - -namespace gfx { - -class Insets; - -class GFX_EXPORT Rect { - public: - constexpr Rect() = default; - constexpr Rect(int width, int height) : size_(width, height) {} - constexpr Rect(int x, int y, int width, int height) - : origin_(x, y), - size_(GetClampedValue(x, width), GetClampedValue(y, height)) {} - constexpr explicit Rect(const Size& size) : size_(size) {} - constexpr Rect(const Point& origin, const Size& size) - : origin_(origin), - size_(GetClampedValue(origin.x(), size.width()), - GetClampedValue(origin.y(), size.height())) {} - -#if defined(OS_WIN) - explicit Rect(const RECT& r); -#elif defined(OS_MACOSX) - explicit Rect(const CGRect& r); -#endif - -#if defined(OS_WIN) - // Construct an equivalent Win32 RECT object. - RECT ToRECT() const; -#elif defined(OS_MACOSX) - // Construct an equivalent CoreGraphics object. - CGRect ToCGRect() const; -#endif - - constexpr int x() const { return origin_.x(); } - void set_x(int x) { - origin_.set_x(x); - size_.set_width(GetClampedValue(x, width())); - } - - constexpr int y() const { return origin_.y(); } - void set_y(int y) { - origin_.set_y(y); - size_.set_height(GetClampedValue(y, height())); - } - - constexpr int width() const { return size_.width(); } - void set_width(int width) { size_.set_width(GetClampedValue(x(), width)); } - - constexpr int height() const { return size_.height(); } - void set_height(int height) { - size_.set_height(GetClampedValue(y(), height)); - } - - constexpr const Point& origin() const { return origin_; } - void set_origin(const Point& origin) { - origin_ = origin; - // Ensure that width and height remain valid. - set_width(width()); - set_height(height()); - } - - constexpr const Size& size() const { return size_; } - void set_size(const Size& size) { - set_width(size.width()); - set_height(size.height()); - } - - constexpr int right() const { return x() + width(); } - constexpr int bottom() const { return y() + height(); } - - constexpr Point top_right() const { return Point(right(), y()); } - constexpr Point bottom_left() const { return Point(x(), bottom()); } - constexpr Point bottom_right() const { return Point(right(), bottom()); } - - Vector2d OffsetFromOrigin() const { return Vector2d(x(), y()); } - - void SetRect(int x, int y, int width, int height) { - origin_.SetPoint(x, y); - // Ensure that width and height remain valid. - set_width(width); - set_height(height); - } - - // Use in place of SetRect() when you know the edges of the rectangle instead - // of the dimensions, rather than trying to determine the width/height - // yourself. This safely handles cases where the width/height would overflow. - void SetByBounds(int left, int top, int right, int bottom); - - // Shrink the rectangle by a horizontal and vertical distance on all sides. - void Inset(int horizontal, int vertical) { - Inset(horizontal, vertical, horizontal, vertical); - } - - // Shrink the rectangle by the given insets. - void Inset(const Insets& insets); - - // Shrink the rectangle by the specified amount on each side. - void Inset(int left, int top, int right, int bottom); - - // Move the rectangle by a horizontal and vertical distance. - void Offset(int horizontal, int vertical); - void Offset(const Vector2d& distance) { Offset(distance.x(), distance.y()); } - void operator+=(const Vector2d& offset); - void operator-=(const Vector2d& offset); - - Insets InsetsFrom(const Rect& inner) const; - - // Returns true if the area of the rectangle is zero. - bool IsEmpty() const { return size_.IsEmpty(); } - - // A rect is less than another rect if its origin is less than - // the other rect's origin. If the origins are equal, then the - // shortest rect is less than the other. If the origin and the - // height are equal, then the narrowest rect is less than. - // This comparison is required to use Rects in sets, or sorted - // vectors. - bool operator<(const Rect& other) const; - - // Returns true if the point identified by point_x and point_y falls inside - // this rectangle. The point (x, y) is inside the rectangle, but the - // point (x + width, y + height) is not. - bool Contains(int point_x, int point_y) const; - - // Returns true if the specified point is contained by this rectangle. - bool Contains(const Point& point) const { - return Contains(point.x(), point.y()); - } - - // Returns true if this rectangle contains the specified rectangle. - bool Contains(const Rect& rect) const; - - // Returns true if this rectangle intersects the specified rectangle. - // An empty rectangle doesn't intersect any rectangle. - bool Intersects(const Rect& rect) const; - - // Computes the intersection of this rectangle with the given rectangle. - void Intersect(const Rect& rect); - - // Computes the union of this rectangle with the given rectangle. The union - // is the smallest rectangle containing both rectangles. - void Union(const Rect& rect); - - // Computes the rectangle resulting from subtracting |rect| from |*this|, - // i.e. the bounding rect of |Region(*this) - Region(rect)|. - void Subtract(const Rect& rect); - - // Fits as much of the receiving rectangle into the supplied rectangle as - // possible, becoming the result. For example, if the receiver had - // a x-location of 2 and a width of 4, and the supplied rectangle had - // an x-location of 0 with a width of 5, the returned rectangle would have - // an x-location of 1 with a width of 4. - void AdjustToFit(const Rect& rect); - - // Returns the center of this rectangle. - Point CenterPoint() const; - - // Becomes a rectangle that has the same center point but with a size capped - // at given |size|. - void ClampToCenteredSize(const Size& size); - - // Splits |this| in two halves, |left_half| and |right_half|. - void SplitVertically(Rect* left_half, Rect* right_half) const; - - // Returns true if this rectangle shares an entire edge (i.e., same width or - // same height) with the given rectangle, and the rectangles do not overlap. - bool SharesEdgeWith(const Rect& rect) const; - - // Returns the manhattan distance from the rect to the point. If the point is - // inside the rect, returns 0. - int ManhattanDistanceToPoint(const Point& point) const; - - // Returns the manhattan distance between the contents of this rect and the - // contents of the given rect. That is, if the intersection of the two rects - // is non-empty then the function returns 0. If the rects share a side, it - // returns the smallest non-zero value appropriate for int. - int ManhattanInternalDistance(const Rect& rect) const; - - std::string ToString() const; - - bool ApproximatelyEqual(const Rect& rect, int tolerance) const; - - private: - gfx::Point origin_; - gfx::Size size_; - - // Returns true iff a+b would overflow max int. - static constexpr bool AddWouldOverflow(int a, int b) { - // In this function, GCC tries to make optimizations that would only work if - // max - a wouldn't overflow but it isn't smart enough to notice that a > 0. - // So cast everything to unsigned to avoid this. As it is guaranteed that - // max - a and b are both already positive, the cast is a noop. - // - // This is intended to be: a > 0 && max - a < b - return a > 0 && b > 0 && - static_cast<unsigned>(std::numeric_limits<int>::max() - a) < - static_cast<unsigned>(b); - } - - // Clamp the size to avoid integer overflow in bottom() and right(). - // This returns the width given an origin and a width. - // TODO(enne): this should probably use base::SaturatedAddition, but that - // function is not a constexpr. - static constexpr int GetClampedValue(int origin, int size) { - return AddWouldOverflow(origin, size) - ? std::numeric_limits<int>::max() - origin - : size; - } -}; - -inline bool operator==(const Rect& lhs, const Rect& rhs) { - return lhs.origin() == rhs.origin() && lhs.size() == rhs.size(); -} - -inline bool operator!=(const Rect& lhs, const Rect& rhs) { - return !(lhs == rhs); -} - -GFX_EXPORT Rect operator+(const Rect& lhs, const Vector2d& rhs); -GFX_EXPORT Rect operator-(const Rect& lhs, const Vector2d& rhs); - -inline Rect operator+(const Vector2d& lhs, const Rect& rhs) { - return rhs + lhs; -} - -GFX_EXPORT Rect IntersectRects(const Rect& a, const Rect& b); -GFX_EXPORT Rect UnionRects(const Rect& a, const Rect& b); -GFX_EXPORT Rect SubtractRects(const Rect& a, const Rect& b); - -// Constructs a rectangle with |p1| and |p2| as opposite corners. -// -// This could also be thought of as "the smallest rect that contains both -// points", except that we consider points on the right/bottom edges of the -// rect to be outside the rect. So technically one or both points will not be -// contained within the rect, because they will appear on one of these edges. -GFX_EXPORT Rect BoundingRect(const Point& p1, const Point& p2); - -// Scales the rect and returns the enclosing rect. Use this only the inputs are -// known to not overflow. Use ScaleToEnclosingRectSafe if the inputs are -// unknown and need to use saturated math. -inline Rect ScaleToEnclosingRect(const Rect& rect, - float x_scale, - float y_scale) { - if (x_scale == 1.f && y_scale == 1.f) - return rect; - // These next functions cast instead of using e.g. ToFlooredInt() because we - // haven't checked to ensure that the clamping behavior of the helper - // functions doesn't degrade performance, and callers shouldn't be passing - // values that cause overflow anyway. - DCHECK(base::IsValueInRangeForNumericType<int>( - std::floor(rect.x() * x_scale))); - DCHECK(base::IsValueInRangeForNumericType<int>( - std::floor(rect.y() * y_scale))); - DCHECK(base::IsValueInRangeForNumericType<int>( - std::ceil(rect.right() * x_scale))); - DCHECK(base::IsValueInRangeForNumericType<int>( - std::ceil(rect.bottom() * y_scale))); - int x = static_cast<int>(std::floor(rect.x() * x_scale)); - int y = static_cast<int>(std::floor(rect.y() * y_scale)); - int r = rect.width() == 0 ? - x : static_cast<int>(std::ceil(rect.right() * x_scale)); - int b = rect.height() == 0 ? - y : static_cast<int>(std::ceil(rect.bottom() * y_scale)); - return Rect(x, y, r - x, b - y); -} - -inline Rect ScaleToEnclosingRect(const Rect& rect, float scale) { - return ScaleToEnclosingRect(rect, scale, scale); -} - -// ScaleToEnclosingRect but clamping instead of asserting if the resulting rect -// would overflow. -inline Rect ScaleToEnclosingRectSafe(const Rect& rect, - float x_scale, - float y_scale) { - if (x_scale == 1.f && y_scale == 1.f) - return rect; - int x = base::saturated_cast<int>(std::floor(rect.x() * x_scale)); - int y = base::saturated_cast<int>(std::floor(rect.y() * y_scale)); - int w = base::saturated_cast<int>(std::ceil(rect.width() * x_scale)); - int h = base::saturated_cast<int>(std::ceil(rect.height() * y_scale)); - return Rect(x, y, w, h); -} - -inline Rect ScaleToEnclosingRectSafe(const Rect& rect, float scale) { - return ScaleToEnclosingRectSafe(rect, scale, scale); -} - -inline Rect ScaleToEnclosedRect(const Rect& rect, - float x_scale, - float y_scale) { - if (x_scale == 1.f && y_scale == 1.f) - return rect; - DCHECK(base::IsValueInRangeForNumericType<int>( - std::ceil(rect.x() * x_scale))); - DCHECK(base::IsValueInRangeForNumericType<int>( - std::ceil(rect.y() * y_scale))); - DCHECK(base::IsValueInRangeForNumericType<int>( - std::floor(rect.right() * x_scale))); - DCHECK(base::IsValueInRangeForNumericType<int>( - std::floor(rect.bottom() * y_scale))); - int x = static_cast<int>(std::ceil(rect.x() * x_scale)); - int y = static_cast<int>(std::ceil(rect.y() * y_scale)); - int r = rect.width() == 0 ? - x : static_cast<int>(std::floor(rect.right() * x_scale)); - int b = rect.height() == 0 ? - y : static_cast<int>(std::floor(rect.bottom() * y_scale)); - return Rect(x, y, r - x, b - y); -} - -inline Rect ScaleToEnclosedRect(const Rect& rect, float scale) { - return ScaleToEnclosedRect(rect, scale, scale); -} - -// This is declared here for use in gtest-based unit tests but is defined in -// the //ui/gfx:test_support target. Depend on that to use this in your unit -// test. This should not be used in production code - call ToString() instead. -void PrintTo(const Rect& rect, ::std::ostream* os); - -} // namespace gfx - -#endif // UI_GFX_GEOMETRY_RECT_H_ diff --git a/ui/gfx/geometry/rect_f.cc b/ui/gfx/geometry/rect_f.cc deleted file mode 100644 index a08e384..0000000 --- a/ui/gfx/geometry/rect_f.cc +++ /dev/null @@ -1,259 +0,0 @@ -// 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/geometry/rect_f.h" - -#include <algorithm> - -#if defined(OS_IOS) -#include <CoreGraphics/CoreGraphics.h> -#elif defined(OS_MACOSX) -#include <ApplicationServices/ApplicationServices.h> -#endif - -#include "base/logging.h" -#include "base/strings/stringprintf.h" -#include "build/build_config.h" -#include "ui/gfx/geometry/insets_f.h" -#include "ui/gfx/geometry/safe_integer_conversions.h" - -namespace gfx { - -static void AdjustAlongAxis(float dst_origin, - float dst_size, - float* origin, - float* size) { - *size = std::min(dst_size, *size); - if (*origin < dst_origin) - *origin = dst_origin; - else - *origin = std::min(dst_origin + dst_size, *origin + *size) - *size; -} - -#if defined(OS_MACOSX) -RectF::RectF(const CGRect& r) - : origin_(r.origin.x, r.origin.y), size_(r.size.width, r.size.height) { -} - -CGRect RectF::ToCGRect() const { - return CGRectMake(x(), y(), width(), height()); -} -#endif - -void RectF::Inset(const InsetsF& insets) { - Inset(insets.left(), insets.top(), insets.right(), insets.bottom()); -} - -void RectF::Inset(float left, float top, float right, float bottom) { - origin_ += Vector2dF(left, top); - set_width(std::max(width() - left - right, static_cast<float>(0))); - set_height(std::max(height() - top - bottom, static_cast<float>(0))); -} - -void RectF::Offset(float horizontal, float vertical) { - origin_ += Vector2dF(horizontal, vertical); -} - -void RectF::operator+=(const Vector2dF& offset) { - origin_ += offset; -} - -void RectF::operator-=(const Vector2dF& offset) { - origin_ -= offset; -} - -InsetsF RectF::InsetsFrom(const RectF& inner) const { - return InsetsF(inner.y() - y(), - inner.x() - x(), - bottom() - inner.bottom(), - right() - inner.right()); -} - -bool RectF::operator<(const RectF& other) const { - if (origin_ == other.origin_) { - if (width() == other.width()) { - return height() < other.height(); - } else { - return width() < other.width(); - } - } else { - return origin_ < other.origin_; - } -} - -bool RectF::Contains(float point_x, float point_y) const { - return (point_x >= x()) && (point_x < right()) && (point_y >= y()) && - (point_y < bottom()); -} - -bool RectF::Contains(const RectF& rect) const { - return (rect.x() >= x() && rect.right() <= right() && rect.y() >= y() && - rect.bottom() <= bottom()); -} - -bool RectF::Intersects(const RectF& rect) const { - return !(IsEmpty() || rect.IsEmpty() || rect.x() >= right() || - rect.right() <= x() || rect.y() >= bottom() || rect.bottom() <= y()); -} - -void RectF::Intersect(const RectF& rect) { - if (IsEmpty() || rect.IsEmpty()) { - SetRect(0, 0, 0, 0); - return; - } - - float rx = std::max(x(), rect.x()); - float ry = std::max(y(), rect.y()); - float rr = std::min(right(), rect.right()); - float rb = std::min(bottom(), rect.bottom()); - - if (rx >= rr || ry >= rb) - rx = ry = rr = rb = 0; // non-intersecting - - SetRect(rx, ry, rr - rx, rb - ry); -} - -void RectF::Union(const RectF& rect) { - if (IsEmpty()) { - *this = rect; - return; - } - if (rect.IsEmpty()) - return; - - float rx = std::min(x(), rect.x()); - float ry = std::min(y(), rect.y()); - float rr = std::max(right(), rect.right()); - float rb = std::max(bottom(), rect.bottom()); - - SetRect(rx, ry, rr - rx, rb - ry); -} - -void RectF::Subtract(const RectF& rect) { - if (!Intersects(rect)) - return; - if (rect.Contains(*static_cast<const RectF*>(this))) { - SetRect(0, 0, 0, 0); - return; - } - - float rx = x(); - float ry = y(); - float rr = right(); - float rb = bottom(); - - if (rect.y() <= y() && rect.bottom() >= bottom()) { - // complete intersection in the y-direction - if (rect.x() <= x()) { - rx = rect.right(); - } else if (rect.right() >= right()) { - rr = rect.x(); - } - } else if (rect.x() <= x() && rect.right() >= right()) { - // complete intersection in the x-direction - if (rect.y() <= y()) { - ry = rect.bottom(); - } else if (rect.bottom() >= bottom()) { - rb = rect.y(); - } - } - SetRect(rx, ry, rr - rx, rb - ry); -} - -void RectF::AdjustToFit(const RectF& rect) { - float new_x = x(); - float new_y = y(); - float new_width = width(); - float new_height = height(); - AdjustAlongAxis(rect.x(), rect.width(), &new_x, &new_width); - AdjustAlongAxis(rect.y(), rect.height(), &new_y, &new_height); - SetRect(new_x, new_y, new_width, new_height); -} - -PointF RectF::CenterPoint() const { - return PointF(x() + width() / 2, y() + height() / 2); -} - -void RectF::ClampToCenteredSize(const SizeF& size) { - float new_width = std::min(width(), size.width()); - float new_height = std::min(height(), size.height()); - float new_x = x() + (width() - new_width) / 2; - float new_y = y() + (height() - new_height) / 2; - SetRect(new_x, new_y, new_width, new_height); -} - -void RectF::SplitVertically(RectF* left_half, RectF* right_half) const { - DCHECK(left_half); - DCHECK(right_half); - - left_half->SetRect(x(), y(), width() / 2, height()); - right_half->SetRect( - left_half->right(), y(), width() - left_half->width(), height()); -} - -bool RectF::SharesEdgeWith(const RectF& rect) const { - return (y() == rect.y() && height() == rect.height() && - (x() == rect.right() || right() == rect.x())) || - (x() == rect.x() && width() == rect.width() && - (y() == rect.bottom() || bottom() == rect.y())); -} - -float RectF::ManhattanDistanceToPoint(const PointF& point) const { - float x_distance = - std::max<float>(0, std::max(x() - point.x(), point.x() - right())); - float y_distance = - std::max<float>(0, std::max(y() - point.y(), point.y() - bottom())); - - return x_distance + y_distance; -} - -float RectF::ManhattanInternalDistance(const RectF& rect) const { - RectF c(*this); - c.Union(rect); - - static const float kEpsilon = std::numeric_limits<float>::epsilon(); - float x = std::max(0.f, c.width() - width() - rect.width() + kEpsilon); - float y = std::max(0.f, c.height() - height() - rect.height() + kEpsilon); - return x + y; -} - -bool RectF::IsExpressibleAsRect() const { - return IsExpressibleAsInt(x()) && IsExpressibleAsInt(y()) && - IsExpressibleAsInt(width()) && IsExpressibleAsInt(height()) && - IsExpressibleAsInt(right()) && IsExpressibleAsInt(bottom()); -} - -std::string RectF::ToString() const { - return base::StringPrintf("%s %s", - origin().ToString().c_str(), - size().ToString().c_str()); -} - -RectF IntersectRects(const RectF& a, const RectF& b) { - RectF result = a; - result.Intersect(b); - return result; -} - -RectF UnionRects(const RectF& a, const RectF& b) { - RectF result = a; - result.Union(b); - return result; -} - -RectF SubtractRects(const RectF& a, const RectF& b) { - RectF result = a; - result.Subtract(b); - return result; -} - -RectF BoundingRect(const PointF& p1, const PointF& p2) { - float rx = std::min(p1.x(), p2.x()); - float ry = std::min(p1.y(), p2.y()); - float rr = std::max(p1.x(), p2.x()); - float rb = std::max(p1.y(), p2.y()); - return RectF(rx, ry, rr - rx, rb - ry); -} - -} // namespace gfx diff --git a/ui/gfx/geometry/rect_f.h b/ui/gfx/geometry/rect_f.h deleted file mode 100644 index 9d99052..0000000 --- a/ui/gfx/geometry/rect_f.h +++ /dev/null @@ -1,242 +0,0 @@ -// 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. - -#ifndef UI_GFX_GEOMETRY_RECT_F_H_ -#define UI_GFX_GEOMETRY_RECT_F_H_ - -#include <iosfwd> -#include <string> - -#include "build/build_config.h" -#include "ui/gfx/geometry/point_f.h" -#include "ui/gfx/geometry/rect.h" -#include "ui/gfx/geometry/size_f.h" -#include "ui/gfx/geometry/vector2d_f.h" - -#if defined(OS_MACOSX) -typedef struct CGRect CGRect; -#endif - -namespace gfx { - -class InsetsF; - -// A floating version of gfx::Rect. -class GFX_EXPORT RectF { - public: - constexpr RectF() = default; - constexpr RectF(float width, float height) : size_(width, height) {} - constexpr RectF(float x, float y, float width, float height) - : origin_(x, y), size_(width, height) {} - constexpr explicit RectF(const SizeF& size) : size_(size) {} - constexpr RectF(const PointF& origin, const SizeF& size) - : origin_(origin), size_(size) {} - - constexpr explicit RectF(const Rect& r) - : RectF(static_cast<float>(r.x()), - static_cast<float>(r.y()), - static_cast<float>(r.width()), - static_cast<float>(r.height())) {} - -#if defined(OS_MACOSX) - explicit RectF(const CGRect& r); - // Construct an equivalent CoreGraphics object. - CGRect ToCGRect() const; -#endif - - constexpr float x() const { return origin_.x(); } - void set_x(float x) { origin_.set_x(x); } - - constexpr float y() const { return origin_.y(); } - void set_y(float y) { origin_.set_y(y); } - - constexpr float width() const { return size_.width(); } - void set_width(float width) { size_.set_width(width); } - - constexpr float height() const { return size_.height(); } - void set_height(float height) { size_.set_height(height); } - - constexpr const PointF& origin() const { return origin_; } - void set_origin(const PointF& origin) { origin_ = origin; } - - constexpr const SizeF& size() const { return size_; } - void set_size(const SizeF& size) { size_ = size; } - - constexpr float right() const { return x() + width(); } - constexpr float bottom() const { return y() + height(); } - - constexpr PointF top_right() const { return PointF(right(), y()); } - constexpr PointF bottom_left() const { return PointF(x(), bottom()); } - constexpr PointF bottom_right() const { return PointF(right(), bottom()); } - - Vector2dF OffsetFromOrigin() const { return Vector2dF(x(), y()); } - - void SetRect(float x, float y, float width, float height) { - origin_.SetPoint(x, y); - size_.SetSize(width, height); - } - - // Shrink the rectangle by a horizontal and vertical distance on all sides. - void Inset(float horizontal, float vertical) { - Inset(horizontal, vertical, horizontal, vertical); - } - - // Shrink the rectangle by the given insets. - void Inset(const InsetsF& insets); - - // Shrink the rectangle by the specified amount on each side. - void Inset(float left, float top, float right, float bottom); - - // Move the rectangle by a horizontal and vertical distance. - void Offset(float horizontal, float vertical); - void Offset(const Vector2dF& distance) { Offset(distance.x(), distance.y()); } - void operator+=(const Vector2dF& offset); - void operator-=(const Vector2dF& offset); - - InsetsF InsetsFrom(const RectF& inner) const; - - // Returns true if the area of the rectangle is zero. - bool IsEmpty() const { return size_.IsEmpty(); } - - // A rect is less than another rect if its origin is less than - // the other rect's origin. If the origins are equal, then the - // shortest rect is less than the other. If the origin and the - // height are equal, then the narrowest rect is less than. - // This comparison is required to use Rects in sets, or sorted - // vectors. - bool operator<(const RectF& other) const; - - // Returns true if the point identified by point_x and point_y falls inside - // this rectangle. The point (x, y) is inside the rectangle, but the - // point (x + width, y + height) is not. - bool Contains(float point_x, float point_y) const; - - // Returns true if the specified point is contained by this rectangle. - bool Contains(const PointF& point) const { - return Contains(point.x(), point.y()); - } - - // Returns true if this rectangle contains the specified rectangle. - bool Contains(const RectF& rect) const; - - // Returns true if this rectangle intersects the specified rectangle. - // An empty rectangle doesn't intersect any rectangle. - bool Intersects(const RectF& rect) const; - - // Computes the intersection of this rectangle with the given rectangle. - void Intersect(const RectF& rect); - - // Computes the union of this rectangle with the given rectangle. The union - // is the smallest rectangle containing both rectangles. - void Union(const RectF& rect); - - // Computes the rectangle resulting from subtracting |rect| from |*this|, - // i.e. the bounding rect of |Region(*this) - Region(rect)|. - void Subtract(const RectF& rect); - - // Fits as much of the receiving rectangle into the supplied rectangle as - // possible, becoming the result. For example, if the receiver had - // a x-location of 2 and a width of 4, and the supplied rectangle had - // an x-location of 0 with a width of 5, the returned rectangle would have - // an x-location of 1 with a width of 4. - void AdjustToFit(const RectF& rect); - - // Returns the center of this rectangle. - PointF CenterPoint() const; - - // Becomes a rectangle that has the same center point but with a size capped - // at given |size|. - void ClampToCenteredSize(const SizeF& size); - - // Splits |this| in two halves, |left_half| and |right_half|. - void SplitVertically(RectF* left_half, RectF* right_half) const; - - // Returns true if this rectangle shares an entire edge (i.e., same width or - // same height) with the given rectangle, and the rectangles do not overlap. - bool SharesEdgeWith(const RectF& rect) const; - - // Returns the manhattan distance from the rect to the point. If the point is - // inside the rect, returns 0. - float ManhattanDistanceToPoint(const PointF& point) const; - - // Returns the manhattan distance between the contents of this rect and the - // contents of the given rect. That is, if the intersection of the two rects - // is non-empty then the function returns 0. If the rects share a side, it - // returns the smallest non-zero value appropriate for float. - float ManhattanInternalDistance(const RectF& rect) const; - - // Scales the rectangle by |scale|. - void Scale(float scale) { - Scale(scale, scale); - } - - void Scale(float x_scale, float y_scale) { - set_origin(ScalePoint(origin(), x_scale, y_scale)); - set_size(ScaleSize(size(), x_scale, y_scale)); - } - - // This method reports if the RectF can be safely converted to an integer - // Rect. When it is false, some dimension of the RectF is outside the bounds - // of what an integer can represent, and converting it to a Rect will require - // clamping. - bool IsExpressibleAsRect() const; - - std::string ToString() const; - - private: - PointF origin_; - SizeF size_; -}; - -inline bool operator==(const RectF& lhs, const RectF& rhs) { - return lhs.origin() == rhs.origin() && lhs.size() == rhs.size(); -} - -inline bool operator!=(const RectF& lhs, const RectF& rhs) { - return !(lhs == rhs); -} - -inline RectF operator+(const RectF& lhs, const Vector2dF& rhs) { - return RectF(lhs.x() + rhs.x(), lhs.y() + rhs.y(), - lhs.width(), lhs.height()); -} - -inline RectF operator-(const RectF& lhs, const Vector2dF& rhs) { - return RectF(lhs.x() - rhs.x(), lhs.y() - rhs.y(), - lhs.width(), lhs.height()); -} - -inline RectF operator+(const Vector2dF& lhs, const RectF& rhs) { - return rhs + lhs; -} - -GFX_EXPORT RectF IntersectRects(const RectF& a, const RectF& b); -GFX_EXPORT RectF UnionRects(const RectF& a, const RectF& b); -GFX_EXPORT RectF SubtractRects(const RectF& a, const RectF& b); - -inline RectF ScaleRect(const RectF& r, float x_scale, float y_scale) { - return RectF(r.x() * x_scale, r.y() * y_scale, - r.width() * x_scale, r.height() * y_scale); -} - -inline RectF ScaleRect(const RectF& r, float scale) { - return ScaleRect(r, scale, scale); -} - -// Constructs a rectangle with |p1| and |p2| as opposite corners. -// -// This could also be thought of as "the smallest rect that contains both -// points", except that we consider points on the right/bottom edges of the -// rect to be outside the rect. So technically one or both points will not be -// contained within the rect, because they will appear on one of these edges. -GFX_EXPORT RectF BoundingRect(const PointF& p1, const PointF& p2); - -// This is declared here for use in gtest-based unit tests but is defined in -// the //ui/gfx:test_support target. Depend on that to use this in your unit -// test. This should not be used in production code - call ToString() instead. -void PrintTo(const RectF& rect, ::std::ostream* os); - -} // namespace gfx - -#endif // UI_GFX_GEOMETRY_RECT_F_H_ diff --git a/ui/gfx/geometry/safe_integer_conversions.h b/ui/gfx/geometry/safe_integer_conversions.h deleted file mode 100644 index 5efe134..0000000 --- a/ui/gfx/geometry/safe_integer_conversions.h +++ /dev/null @@ -1,62 +0,0 @@ -// 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. - -#ifndef UI_GFX_GEOMETRY_SAFE_INTEGER_CONVERSIONS_H_ -#define UI_GFX_GEOMETRY_SAFE_INTEGER_CONVERSIONS_H_ - -#include <cmath> -#include <limits> - -#include "base/numerics/safe_conversions.h" -#include "ui/gfx/gfx_export.h" - -namespace gfx { - -inline int ToFlooredInt(float value) { - return base::saturated_cast<int>(std::floor(value)); -} - -inline int ToCeiledInt(float value) { - return base::saturated_cast<int>(std::ceil(value)); -} - -inline int ToFlooredInt(double value) { - return base::saturated_cast<int>(std::floor(value)); -} - -inline int ToCeiledInt(double value) { - return base::saturated_cast<int>(std::ceil(value)); -} - -inline int ToRoundedInt(float value) { - float rounded; - if (value >= 0.0f) - rounded = std::floor(value + 0.5f); - else - rounded = std::ceil(value - 0.5f); - return base::saturated_cast<int>(rounded); -} - -inline int ToRoundedInt(double value) { - double rounded; - if (value >= 0.0) - rounded = std::floor(value + 0.5); - else - rounded = std::ceil(value - 0.5); - return base::saturated_cast<int>(rounded); -} - -inline bool IsExpressibleAsInt(float value) { - if (value != value) - return false; // no int NaN. - if (value > std::numeric_limits<int>::max()) - return false; - if (value < std::numeric_limits<int>::min()) - return false; - return true; -} - -} // namespace gfx - -#endif // UI_GFX_GEOMETRY_SAFE_INTEGER_CONVERSIONS_H_ diff --git a/ui/gfx/geometry/size.cc b/ui/gfx/geometry/size.cc deleted file mode 100644 index 6948672..0000000 --- a/ui/gfx/geometry/size.cc +++ /dev/null @@ -1,115 +0,0 @@ -// 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/geometry/size.h" - -#if defined(OS_WIN) -#include <windows.h> -#elif defined(OS_IOS) -#include <CoreGraphics/CoreGraphics.h> -#elif defined(OS_MACOSX) -#include <ApplicationServices/ApplicationServices.h> -#endif - -#include "base/numerics/safe_math.h" -#include "base/numerics/saturated_arithmetic.h" -#include "base/strings/stringprintf.h" -#include "build/build_config.h" -#include "ui/gfx/geometry/safe_integer_conversions.h" -#include "ui/gfx/geometry/size_conversions.h" - -namespace gfx { - -#if defined(OS_MACOSX) -Size::Size(const CGSize& s) - : width_(s.width < 0 ? 0 : s.width), - height_(s.height < 0 ? 0 : s.height) { -} - -Size& Size::operator=(const CGSize& s) { - set_width(s.width); - set_height(s.height); - return *this; -} -#endif - -#if defined(OS_WIN) -SIZE Size::ToSIZE() const { - SIZE s; - s.cx = width(); - s.cy = height(); - return s; -} -#elif defined(OS_MACOSX) -CGSize Size::ToCGSize() const { - return CGSizeMake(width(), height()); -} -#endif - -int Size::GetArea() const { - return GetCheckedArea().ValueOrDie(); -} - -base::CheckedNumeric<int> Size::GetCheckedArea() const { - base::CheckedNumeric<int> checked_area = width(); - checked_area *= height(); - return checked_area; -} - -void Size::Enlarge(int grow_width, int grow_height) { - SetSize(base::SaturatedAddition(width(), grow_width), - base::SaturatedAddition(height(), grow_height)); -} - -void Size::SetToMin(const Size& other) { - width_ = width() <= other.width() ? width() : other.width(); - height_ = height() <= other.height() ? height() : other.height(); -} - -void Size::SetToMax(const Size& other) { - width_ = width() >= other.width() ? width() : other.width(); - height_ = height() >= other.height() ? height() : other.height(); -} - -std::string Size::ToString() const { - return base::StringPrintf("%dx%d", width(), height()); -} - -Size ScaleToCeiledSize(const Size& size, float x_scale, float y_scale) { - if (x_scale == 1.f && y_scale == 1.f) - return size; - return ToCeiledSize(ScaleSize(gfx::SizeF(size), x_scale, y_scale)); -} - -Size ScaleToCeiledSize(const Size& size, float scale) { - if (scale == 1.f) - return size; - return ToCeiledSize(ScaleSize(gfx::SizeF(size), scale, scale)); -} - -Size ScaleToFlooredSize(const Size& size, float x_scale, float y_scale) { - if (x_scale == 1.f && y_scale == 1.f) - return size; - return ToFlooredSize(ScaleSize(gfx::SizeF(size), x_scale, y_scale)); -} - -Size ScaleToFlooredSize(const Size& size, float scale) { - if (scale == 1.f) - return size; - return ToFlooredSize(ScaleSize(gfx::SizeF(size), scale, scale)); -} - -Size ScaleToRoundedSize(const Size& size, float x_scale, float y_scale) { - if (x_scale == 1.f && y_scale == 1.f) - return size; - return ToRoundedSize(ScaleSize(gfx::SizeF(size), x_scale, y_scale)); -} - -Size ScaleToRoundedSize(const Size& size, float scale) { - if (scale == 1.f) - return size; - return ToRoundedSize(ScaleSize(gfx::SizeF(size), scale, scale)); -} - -} // namespace gfx diff --git a/ui/gfx/geometry/size.h b/ui/gfx/geometry/size.h deleted file mode 100644 index 8ce4178..0000000 --- a/ui/gfx/geometry/size.h +++ /dev/null @@ -1,103 +0,0 @@ -// 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. - -#ifndef UI_GFX_GEOMETRY_SIZE_H_ -#define UI_GFX_GEOMETRY_SIZE_H_ - -#include <iosfwd> -#include <string> - -#include "base/compiler_specific.h" -#include "base/numerics/safe_math.h" -#include "build/build_config.h" -#include "ui/gfx/gfx_export.h" - -#if defined(OS_WIN) -typedef struct tagSIZE SIZE; -#elif defined(OS_MACOSX) -typedef struct CGSize CGSize; -#endif - -namespace gfx { - -// A size has width and height values. -class GFX_EXPORT Size { - public: - constexpr Size() : width_(0), height_(0) {} - constexpr Size(int width, int height) - : width_(width < 0 ? 0 : width), height_(height < 0 ? 0 : height) {} -#if defined(OS_MACOSX) - explicit Size(const CGSize& s); -#endif - -#if defined(OS_MACOSX) - Size& operator=(const CGSize& s); -#endif - -#if defined(OS_WIN) - SIZE ToSIZE() const; -#elif defined(OS_MACOSX) - CGSize ToCGSize() const; -#endif - - constexpr int width() const { return width_; } - constexpr int height() const { return height_; } - - void set_width(int width) { width_ = width < 0 ? 0 : width; } - void set_height(int height) { height_ = height < 0 ? 0 : height; } - - // This call will CHECK if the area of this size would overflow int. - int GetArea() const; - // Returns a checked numeric representation of the area. - base::CheckedNumeric<int> GetCheckedArea() const; - - void SetSize(int width, int height) { - set_width(width); - set_height(height); - } - - void Enlarge(int grow_width, int grow_height); - - void SetToMin(const Size& other); - void SetToMax(const Size& other); - - bool IsEmpty() const { return !width() || !height(); } - - std::string ToString() const; - - private: - int width_; - int height_; -}; - -inline bool operator==(const Size& lhs, const Size& rhs) { - return lhs.width() == rhs.width() && lhs.height() == rhs.height(); -} - -inline bool operator!=(const Size& lhs, const Size& rhs) { - return !(lhs == rhs); -} - -// This is declared here for use in gtest-based unit tests but is defined in -// the //ui/gfx:test_support target. Depend on that to use this in your unit -// test. This should not be used in production code - call ToString() instead. -void PrintTo(const Size& size, ::std::ostream* os); - -// Helper methods to scale a gfx::Size to a new gfx::Size. -GFX_EXPORT Size ScaleToCeiledSize(const Size& size, - float x_scale, - float y_scale); -GFX_EXPORT Size ScaleToCeiledSize(const Size& size, float scale); -GFX_EXPORT Size ScaleToFlooredSize(const Size& size, - float x_scale, - float y_scale); -GFX_EXPORT Size ScaleToFlooredSize(const Size& size, float scale); -GFX_EXPORT Size ScaleToRoundedSize(const Size& size, - float x_scale, - float y_scale); -GFX_EXPORT Size ScaleToRoundedSize(const Size& size, float scale); - -} // namespace gfx - -#endif // UI_GFX_GEOMETRY_SIZE_H_ diff --git a/ui/gfx/geometry/size_conversions.cc b/ui/gfx/geometry/size_conversions.cc deleted file mode 100644 index c924e86..0000000 --- a/ui/gfx/geometry/size_conversions.cc +++ /dev/null @@ -1,30 +0,0 @@ -// 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/geometry/size_conversions.h" - -#include "ui/gfx/geometry/safe_integer_conversions.h" - -namespace gfx { - -Size ToFlooredSize(const SizeF& size) { - int w = ToFlooredInt(size.width()); - int h = ToFlooredInt(size.height()); - return Size(w, h); -} - -Size ToCeiledSize(const SizeF& size) { - int w = ToCeiledInt(size.width()); - int h = ToCeiledInt(size.height()); - return Size(w, h); -} - -Size ToRoundedSize(const SizeF& size) { - int w = ToRoundedInt(size.width()); - int h = ToRoundedInt(size.height()); - return Size(w, h); -} - -} // namespace gfx - diff --git a/ui/gfx/geometry/size_conversions.h b/ui/gfx/geometry/size_conversions.h deleted file mode 100644 index 96fb79f..0000000 --- a/ui/gfx/geometry/size_conversions.h +++ /dev/null @@ -1,24 +0,0 @@ -// 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. - -#ifndef UI_GFX_GEOMETRY_SIZE_CONVERSIONS_H_ -#define UI_GFX_GEOMETRY_SIZE_CONVERSIONS_H_ - -#include "ui/gfx/geometry/size.h" -#include "ui/gfx/geometry/size_f.h" - -namespace gfx { - -// Returns a Size with each component from the input SizeF floored. -GFX_EXPORT Size ToFlooredSize(const SizeF& size); - -// Returns a Size with each component from the input SizeF ceiled. -GFX_EXPORT Size ToCeiledSize(const SizeF& size); - -// Returns a Size with each component from the input SizeF rounded. -GFX_EXPORT Size ToRoundedSize(const SizeF& size); - -} // namespace gfx - -#endif // UI_GFX_GEOMETRY_SIZE_CONVERSIONS_H_ diff --git a/ui/gfx/geometry/size_f.cc b/ui/gfx/geometry/size_f.cc deleted file mode 100644 index 6d08e18..0000000 --- a/ui/gfx/geometry/size_f.cc +++ /dev/null @@ -1,39 +0,0 @@ -// 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/geometry/size_f.h" - -#include "base/strings/stringprintf.h" - -namespace gfx { - -float SizeF::GetArea() const { - return width() * height(); -} - -void SizeF::Enlarge(float grow_width, float grow_height) { - SetSize(width() + grow_width, height() + grow_height); -} - -void SizeF::SetToMin(const SizeF& other) { - width_ = width() <= other.width() ? width() : other.width(); - height_ = height() <= other.height() ? height() : other.height(); -} - -void SizeF::SetToMax(const SizeF& other) { - width_ = width() >= other.width() ? width() : other.width(); - height_ = height() >= other.height() ? height() : other.height(); -} - -std::string SizeF::ToString() const { - return base::StringPrintf("%fx%f", width(), height()); -} - -SizeF ScaleSize(const SizeF& s, float x_scale, float y_scale) { - SizeF scaled_s(s); - scaled_s.Scale(x_scale, y_scale); - return scaled_s; -} - -} // namespace gfx diff --git a/ui/gfx/geometry/size_f.h b/ui/gfx/geometry/size_f.h deleted file mode 100644 index 0757ef6..0000000 --- a/ui/gfx/geometry/size_f.h +++ /dev/null @@ -1,97 +0,0 @@ -// 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. - -#ifndef UI_GFX_GEOMETRY_SIZE_F_H_ -#define UI_GFX_GEOMETRY_SIZE_F_H_ - -#include <iosfwd> -#include <string> - -#include "base/compiler_specific.h" -#include "base/gtest_prod_util.h" -#include "ui/gfx/geometry/size.h" -#include "ui/gfx/gfx_export.h" - -namespace gfx { - -FORWARD_DECLARE_TEST(SizeTest, TrivialDimensionTests); -FORWARD_DECLARE_TEST(SizeTest, ClampsToZero); -FORWARD_DECLARE_TEST(SizeTest, ConsistentClamping); - -// A floating version of gfx::Size. -class GFX_EXPORT SizeF { - public: - constexpr SizeF() : width_(0.f), height_(0.f) {} - constexpr SizeF(float width, float height) - : width_(clamp(width)), height_(clamp(height)) {} - - constexpr explicit SizeF(const Size& size) - : SizeF(static_cast<float>(size.width()), - static_cast<float>(size.height())) {} - - constexpr float width() const { return width_; } - constexpr float height() const { return height_; } - - void set_width(float width) { width_ = clamp(width); } - void set_height(float height) { height_ = clamp(height); } - - float GetArea() const; - - void SetSize(float width, float height) { - set_width(width); - set_height(height); - } - - void Enlarge(float grow_width, float grow_height); - - void SetToMin(const SizeF& other); - void SetToMax(const SizeF& other); - - bool IsEmpty() const { return !width() || !height(); } - - void Scale(float scale) { - Scale(scale, scale); - } - - void Scale(float x_scale, float y_scale) { - SetSize(width() * x_scale, height() * y_scale); - } - - std::string ToString() const; - - private: - FRIEND_TEST_ALL_PREFIXES(SizeTest, TrivialDimensionTests); - FRIEND_TEST_ALL_PREFIXES(SizeTest, ClampsToZero); - FRIEND_TEST_ALL_PREFIXES(SizeTest, ConsistentClamping); - - static constexpr float kTrivial = 8.f * std::numeric_limits<float>::epsilon(); - - static constexpr float clamp(float f) { return f > kTrivial ? f : 0.f; } - - float width_; - float height_; -}; - -inline bool operator==(const SizeF& lhs, const SizeF& rhs) { - return lhs.width() == rhs.width() && lhs.height() == rhs.height(); -} - -inline bool operator!=(const SizeF& lhs, const SizeF& rhs) { - return !(lhs == rhs); -} - -GFX_EXPORT SizeF ScaleSize(const SizeF& p, float x_scale, float y_scale); - -inline SizeF ScaleSize(const SizeF& p, float scale) { - return ScaleSize(p, scale, scale); -} - -// This is declared here for use in gtest-based unit tests but is defined in -// the //ui/gfx:test_support target. Depend on that to use this in your unit -// test. This should not be used in production code - call ToString() instead. -void PrintTo(const SizeF& size, ::std::ostream* os); - -} // namespace gfx - -#endif // UI_GFX_GEOMETRY_SIZE_F_H_ diff --git a/ui/gfx/geometry/vector2d.cc b/ui/gfx/geometry/vector2d.cc deleted file mode 100644 index 2b4875c..0000000 --- a/ui/gfx/geometry/vector2d.cc +++ /dev/null @@ -1,40 +0,0 @@ -// 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/geometry/vector2d.h" - -#include <cmath> - -#include "base/numerics/saturated_arithmetic.h" -#include "base/strings/stringprintf.h" - -namespace gfx { - -bool Vector2d::IsZero() const { - return x_ == 0 && y_ == 0; -} - -void Vector2d::Add(const Vector2d& other) { - x_ = base::SaturatedAddition(other.x_, x_); - y_ = base::SaturatedAddition(other.y_, y_); -} - -void Vector2d::Subtract(const Vector2d& other) { - x_ = base::SaturatedSubtraction(x_, other.x_); - y_ = base::SaturatedSubtraction(y_, other.y_); -} - -int64_t Vector2d::LengthSquared() const { - return static_cast<int64_t>(x_) * x_ + static_cast<int64_t>(y_) * y_; -} - -float Vector2d::Length() const { - return static_cast<float>(std::sqrt(static_cast<double>(LengthSquared()))); -} - -std::string Vector2d::ToString() const { - return base::StringPrintf("[%d %d]", x_, y_); -} - -} // namespace gfx diff --git a/ui/gfx/geometry/vector2d.h b/ui/gfx/geometry/vector2d.h deleted file mode 100644 index 4b45667..0000000 --- a/ui/gfx/geometry/vector2d.h +++ /dev/null @@ -1,100 +0,0 @@ -// 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. - -// Defines a simple integer vector class. This class is used to indicate a -// distance in two dimensions between two points. Subtracting two points should -// produce a vector, and adding a vector to a point produces the point at the -// vector's distance from the original point. - -#ifndef UI_GFX_GEOMETRY_VECTOR2D_H_ -#define UI_GFX_GEOMETRY_VECTOR2D_H_ - -#include <stdint.h> - -#include <iosfwd> -#include <string> - -#include "ui/gfx/geometry/vector2d_f.h" -#include "ui/gfx/gfx_export.h" - -namespace gfx { - -class GFX_EXPORT Vector2d { - public: - constexpr Vector2d() : x_(0), y_(0) {} - constexpr Vector2d(int x, int y) : x_(x), y_(y) {} - - constexpr int x() const { return x_; } - void set_x(int x) { x_ = x; } - - constexpr int y() const { return y_; } - void set_y(int y) { y_ = y; } - - // True if both components of the vector are 0. - bool IsZero() const; - - // Add the components of the |other| vector to the current vector. - void Add(const Vector2d& other); - // Subtract the components of the |other| vector from the current vector. - void Subtract(const Vector2d& other); - - void operator+=(const Vector2d& other) { Add(other); } - void operator-=(const Vector2d& other) { Subtract(other); } - - void SetToMin(const Vector2d& other) { - x_ = x_ <= other.x_ ? x_ : other.x_; - y_ = y_ <= other.y_ ? y_ : other.y_; - } - - void SetToMax(const Vector2d& other) { - x_ = x_ >= other.x_ ? x_ : other.x_; - y_ = y_ >= other.y_ ? y_ : other.y_; - } - - // Gives the square of the diagonal length of the vector. Since this is - // cheaper to compute than Length(), it is useful when you want to compare - // relative lengths of different vectors without needing the actual lengths. - int64_t LengthSquared() const; - // Gives the diagonal length of the vector. - float Length() const; - - std::string ToString() const; - - operator Vector2dF() const { - return Vector2dF(static_cast<float>(x()), static_cast<float>(y())); - } - - private: - int x_; - int y_; -}; - -inline bool operator==(const Vector2d& lhs, const Vector2d& rhs) { - return lhs.x() == rhs.x() && lhs.y() == rhs.y(); -} - -inline Vector2d operator-(const Vector2d& v) { - return Vector2d(-v.x(), -v.y()); -} - -inline Vector2d operator+(const Vector2d& lhs, const Vector2d& rhs) { - Vector2d result = lhs; - result.Add(rhs); - return result; -} - -inline Vector2d operator-(const Vector2d& lhs, const Vector2d& rhs) { - Vector2d result = lhs; - result.Add(-rhs); - return result; -} - -// This is declared here for use in gtest-based unit tests but is defined in -// the //ui/gfx:test_support target. Depend on that to use this in your unit -// test. This should not be used in production code - call ToString() instead. -void PrintTo(const Vector2d& vector, ::std::ostream* os); - -} // namespace gfx - -#endif // UI_GFX_GEOMETRY_VECTOR2D_H_ diff --git a/ui/gfx/geometry/vector2d_f.cc b/ui/gfx/geometry/vector2d_f.cc deleted file mode 100644 index ccb15ae..0000000 --- a/ui/gfx/geometry/vector2d_f.cc +++ /dev/null @@ -1,60 +0,0 @@ -// 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/geometry/vector2d_f.h" - -#include <cmath> - -#include "base/strings/stringprintf.h" - -namespace gfx { - -std::string Vector2dF::ToString() const { - return base::StringPrintf("[%f %f]", x_, y_); -} - -bool Vector2dF::IsZero() const { - return x_ == 0 && y_ == 0; -} - -void Vector2dF::Add(const Vector2dF& other) { - x_ += other.x_; - y_ += other.y_; -} - -void Vector2dF::Subtract(const Vector2dF& other) { - x_ -= other.x_; - y_ -= other.y_; -} - -double Vector2dF::LengthSquared() const { - return static_cast<double>(x_) * x_ + static_cast<double>(y_) * y_; -} - -float Vector2dF::Length() const { - return static_cast<float>(std::sqrt(LengthSquared())); -} - -void Vector2dF::Scale(float x_scale, float y_scale) { - x_ *= x_scale; - y_ *= y_scale; -} - -double CrossProduct(const Vector2dF& lhs, const Vector2dF& rhs) { - return static_cast<double>(lhs.x()) * rhs.y() - - static_cast<double>(lhs.y()) * rhs.x(); -} - -double DotProduct(const Vector2dF& lhs, const Vector2dF& rhs) { - return static_cast<double>(lhs.x()) * rhs.x() + - static_cast<double>(lhs.y()) * rhs.y(); -} - -Vector2dF ScaleVector2d(const Vector2dF& v, float x_scale, float y_scale) { - Vector2dF scaled_v(v); - scaled_v.Scale(x_scale, y_scale); - return scaled_v; -} - -} // namespace gfx diff --git a/ui/gfx/geometry/vector2d_f.h b/ui/gfx/geometry/vector2d_f.h deleted file mode 100644 index 92f7f87..0000000 --- a/ui/gfx/geometry/vector2d_f.h +++ /dev/null @@ -1,118 +0,0 @@ -// 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. - -// Defines a simple float vector class. This class is used to indicate a -// distance in two dimensions between two points. Subtracting two points should -// produce a vector, and adding a vector to a point produces the point at the -// vector's distance from the original point. - -#ifndef UI_GFX_GEOMETRY_VECTOR2D_F_H_ -#define UI_GFX_GEOMETRY_VECTOR2D_F_H_ - -#include <iosfwd> -#include <string> - -#include "ui/gfx/gfx_export.h" - -namespace gfx { - -class GFX_EXPORT Vector2dF { - public: - constexpr Vector2dF() : x_(0), y_(0) {} - constexpr Vector2dF(float x, float y) : x_(x), y_(y) {} - - constexpr float x() const { return x_; } - void set_x(float x) { x_ = x; } - - constexpr float y() const { return y_; } - void set_y(float y) { y_ = y; } - - // True if both components of the vector are 0. - bool IsZero() const; - - // Add the components of the |other| vector to the current vector. - void Add(const Vector2dF& other); - // Subtract the components of the |other| vector from the current vector. - void Subtract(const Vector2dF& other); - - void operator+=(const Vector2dF& other) { Add(other); } - void operator-=(const Vector2dF& other) { Subtract(other); } - - void SetToMin(const Vector2dF& other) { - x_ = x_ <= other.x_ ? x_ : other.x_; - y_ = y_ <= other.y_ ? y_ : other.y_; - } - - void SetToMax(const Vector2dF& other) { - x_ = x_ >= other.x_ ? x_ : other.x_; - y_ = y_ >= other.y_ ? y_ : other.y_; - } - - // Gives the square of the diagonal length of the vector. - double LengthSquared() const; - // Gives the diagonal length of the vector. - float Length() const; - - // Scale the x and y components of the vector by |scale|. - void Scale(float scale) { Scale(scale, scale); } - // Scale the x and y components of the vector by |x_scale| and |y_scale| - // respectively. - void Scale(float x_scale, float y_scale); - - std::string ToString() const; - - private: - float x_; - float y_; -}; - -inline bool operator==(const Vector2dF& lhs, const Vector2dF& rhs) { - return lhs.x() == rhs.x() && lhs.y() == rhs.y(); -} - -inline bool operator!=(const Vector2dF& lhs, const Vector2dF& rhs) { - return !(lhs == rhs); -} - -inline Vector2dF operator-(const Vector2dF& v) { - return Vector2dF(-v.x(), -v.y()); -} - -inline Vector2dF operator+(const Vector2dF& lhs, const Vector2dF& rhs) { - Vector2dF result = lhs; - result.Add(rhs); - return result; -} - -inline Vector2dF operator-(const Vector2dF& lhs, const Vector2dF& rhs) { - Vector2dF result = lhs; - result.Add(-rhs); - return result; -} - -// Return the cross product of two vectors. -GFX_EXPORT double CrossProduct(const Vector2dF& lhs, const Vector2dF& rhs); - -// Return the dot product of two vectors. -GFX_EXPORT double DotProduct(const Vector2dF& lhs, const Vector2dF& rhs); - -// Return a vector that is |v| scaled by the given scale factors along each -// axis. -GFX_EXPORT Vector2dF ScaleVector2d(const Vector2dF& v, - float x_scale, - float y_scale); - -// Return a vector that is |v| scaled by the given scale factor. -inline Vector2dF ScaleVector2d(const Vector2dF& v, float scale) { - return ScaleVector2d(v, scale, scale); -} - -// This is declared here for use in gtest-based unit tests but is defined in -// the //ui/gfx:test_support target. Depend on that to use this in your unit -// test. This should not be used in production code - call ToString() instead. -void PrintTo(const Vector2dF& vector, ::std::ostream* os); - -} // namespace gfx - -#endif // UI_GFX_GEOMETRY_VECTOR2D_F_H_ diff --git a/ui/gfx/gfx_export.h b/ui/gfx/gfx_export.h deleted file mode 100644 index 20c8bb1..0000000 --- a/ui/gfx/gfx_export.h +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) 2013 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. - -#ifndef UI_GFX_GFX_EXPORT_H_ -#define UI_GFX_GFX_EXPORT_H_ - -#if defined(COMPONENT_BUILD) -#if defined(WIN32) - -#if defined(GFX_IMPLEMENTATION) -#define GFX_EXPORT __declspec(dllexport) -#else -#define GFX_EXPORT __declspec(dllimport) -#endif // defined(GFX_IMPLEMENTATION) - -#else // defined(WIN32) -#if defined(GFX_IMPLEMENTATION) -#define GFX_EXPORT __attribute__((visibility("default"))) -#else -#define GFX_EXPORT -#endif -#endif - -#else // defined(COMPONENT_BUILD) -#define GFX_EXPORT -#endif - -#endif // UI_GFX_GFX_EXPORT_H_ diff --git a/ui/gfx/range/BUILD.gn b/ui/gfx/range/BUILD.gn deleted file mode 100644 index 0a8d8b2..0000000 --- a/ui/gfx/range/BUILD.gn +++ /dev/null @@ -1,33 +0,0 @@ -# Copyright 2016 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. - -component("range") { - sources = [ - "gfx_range_export.h", - "range.cc", - "range.h", - "range_f.cc", - "range_f.h", - "range_mac.mm", - "range_win.cc", - ] - - if (is_ios) { - set_sources_assignment_filter([]) - sources += [ "range_mac.mm" ] - set_sources_assignment_filter(sources_assignment_filter) - } - - configs += [ - # TODO(jschuh): crbug.com/167187 fix size_t to int truncations. - "//build/config/compiler:no_size_t_to_int_warning", - ] - - defines = [ "GFX_RANGE_IMPLEMENTATION" ] - - deps = [ - "//base", - "//ui/gfx:gfx_export", - ] -} diff --git a/ui/gfx/range/gfx_range_export.h b/ui/gfx/range/gfx_range_export.h deleted file mode 100644 index 5634c49..0000000 --- a/ui/gfx/range/gfx_range_export.h +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2016 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. - -#ifndef GFX_RANGE_EXPORT_H_ -#define GFX_RANGE_EXPORT_H_ - -#if defined(COMPONENT_BUILD) -#if defined(WIN32) - -#if defined(GFX_RANGE_IMPLEMENTATION) -#define GFX_RANGE_EXPORT __declspec(dllexport) -#else -#define GFX_RANGE_EXPORT __declspec(dllimport) -#endif // defined(GFX_RANGE_IMPLEMENTATION) - -#else // defined(WIN32) -#if defined(GFX_RANGE_IMPLEMENTATION) -#define GFX_RANGE_EXPORT __attribute__((visibility("default"))) -#else -#define GFX_RANGE_EXPORT -#endif -#endif - -#else // defined(COMPONENT_BUILD) -#define GFX_RANGE_EXPORT -#endif - -#endif // GFX_RANGE_EXPORT_H_ diff --git a/ui/gfx/range/range.cc b/ui/gfx/range/range.cc deleted file mode 100644 index fa837d0..0000000 --- a/ui/gfx/range/range.cc +++ /dev/null @@ -1,34 +0,0 @@ -// 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/range/range.h" - -#include <inttypes.h> - -#include <algorithm> - -#include "base/logging.h" -#include "base/strings/stringprintf.h" - -namespace gfx { - -Range Range::Intersect(const Range& range) const { - uint32_t min = std::max(GetMin(), range.GetMin()); - uint32_t max = std::min(GetMax(), range.GetMax()); - - if (min >= max) // No intersection. - return InvalidRange(); - - return Range(min, max); -} - -std::string Range::ToString() const { - return base::StringPrintf("{%" PRIu32 ",%" PRIu32 "}", start(), end()); -} - -std::ostream& operator<<(std::ostream& os, const Range& range) { - return os << range.ToString(); -} - -} // namespace gfx diff --git a/ui/gfx/range/range.h b/ui/gfx/range/range.h deleted file mode 100644 index e785eb6..0000000 --- a/ui/gfx/range/range.h +++ /dev/null @@ -1,139 +0,0 @@ -// 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. - -#ifndef UI_GFX_RANGE_RANGE_H_ -#define UI_GFX_RANGE_RANGE_H_ - -#include <stddef.h> -#include <stdint.h> - -#include <limits> -#include <ostream> -#include <string> - -#include "build/build_config.h" -#include "ui/gfx/range/gfx_range_export.h" - -#if defined(OS_MACOSX) -#if __OBJC__ -#import <Foundation/Foundation.h> -#else -typedef struct _NSRange NSRange; -#endif -#endif // defined(OS_MACOSX) - -#if defined(OS_WIN) -#include <windows.h> -#include <richedit.h> -#endif - -namespace gfx { - -// A Range contains two integer values that represent a numeric range, like the -// range of characters in a text selection. A range is made of a start and end -// position; when they are the same, the Range is akin to a caret. Note that -// |start_| can be greater than |end_| to respect the directionality of the -// range. -class GFX_RANGE_EXPORT Range { - public: - // Creates an empty range {0,0}. - constexpr Range() : Range(0) {} - - // Initializes the range with a start and end. - constexpr Range(uint32_t start, uint32_t end) : start_(start), end_(end) {} - - // Initializes the range with the same start and end positions. - constexpr explicit Range(uint32_t position) : Range(position, position) {} - - // Platform constructors. -#if defined(OS_MACOSX) - explicit Range(const NSRange& range); -#elif defined(OS_WIN) - // The |total_length| paramater should be used if the CHARRANGE is set to - // {0,-1} to indicate the whole range. - Range(const CHARRANGE& range, LONG total_length = -1); -#endif - - // Returns a range that is invalid, which is {UINT32_MAX,UINT32_MAX}. - static constexpr Range InvalidRange() { - return Range(std::numeric_limits<uint32_t>::max()); - } - - // Checks if the range is valid through comparison to InvalidRange(). - constexpr bool IsValid() const { return *this != InvalidRange(); } - - // Getters and setters. - constexpr uint32_t start() const { return start_; } - void set_start(uint32_t start) { start_ = start; } - - constexpr uint32_t end() const { return end_; } - void set_end(uint32_t end) { end_ = end; } - - // Returns the absolute value of the length. - constexpr uint32_t length() const { return GetMax() - GetMin(); } - - constexpr bool is_reversed() const { return start() > end(); } - constexpr bool is_empty() const { return start() == end(); } - - // Returns the minimum and maximum values. - constexpr uint32_t GetMin() const { - return start() < end() ? start() : end(); - } - constexpr uint32_t GetMax() const { - return start() > end() ? start() : end(); - } - - constexpr bool operator==(const Range& other) const { - return start() == other.start() && end() == other.end(); - } - constexpr bool operator!=(const Range& other) const { - return !(*this == other); - } - constexpr bool EqualsIgnoringDirection(const Range& other) const { - return GetMin() == other.GetMin() && GetMax() == other.GetMax(); - } - - // Returns true if this range intersects the specified |range|. - constexpr bool Intersects(const Range& range) const { - return IsValid() && range.IsValid() && - !(range.GetMax() < GetMin() || range.GetMin() >= GetMax()); - } - - // Returns true if this range contains the specified |range|. - constexpr bool Contains(const Range& range) const { - return IsValid() && range.IsValid() && GetMin() <= range.GetMin() && - range.GetMax() <= GetMax(); - } - - // Computes the intersection of this range with the given |range|. - // If they don't intersect, it returns an InvalidRange(). - // The returned range is always empty or forward (never reversed). - Range Intersect(const Range& range) const; - -#if defined(OS_MACOSX) - Range& operator=(const NSRange& range); - - // NSRange does not store the directionality of a range, so if this - // is_reversed(), the range will get flipped when converted to an NSRange. - NSRange ToNSRange() const; -#elif defined(OS_WIN) - CHARRANGE ToCHARRANGE() const; -#endif - // GTK+ has no concept of a range. - - std::string ToString() const; - - private: - // Note: we use uint32_t instead of size_t because this struct is sent over - // IPC which could span 32 & 64 bit processes. This is fine since text spans - // shouldn't exceed UINT32_MAX even on 64 bit builds. - uint32_t start_; - uint32_t end_; -}; - -GFX_RANGE_EXPORT std::ostream& operator<<(std::ostream& os, const Range& range); - -} // namespace gfx - -#endif // UI_GFX_RANGE_RANGE_H_ diff --git a/ui/gfx/range/range_f.cc b/ui/gfx/range/range_f.cc deleted file mode 100644 index b3bfc69..0000000 --- a/ui/gfx/range/range_f.cc +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright 2015 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/range/range_f.h" - -#include <stddef.h> - -#include <algorithm> -#include <cmath> - -#include "base/format_macros.h" -#include "base/strings/stringprintf.h" - -namespace gfx { - -RangeF RangeF::Intersect(const RangeF& range) const { - float min = std::max(GetMin(), range.GetMin()); - float max = std::min(GetMax(), range.GetMax()); - - if (min >= max) // No intersection. - return InvalidRange(); - - return RangeF(min, max); -} - -RangeF RangeF::Intersect(const Range& range) const { - RangeF range_f(range.start(), range.end()); - return Intersect(range_f); -} - -Range RangeF::Floor() const { - uint32_t start = start_ > 0 ? static_cast<uint32_t>(std::floor(start_)) : 0; - uint32_t end = end_ > 0 ? static_cast<uint32_t>(std::floor(end_)) : 0; - return Range(start, end); -} - -Range RangeF::Ceil() const { - uint32_t start = start_ > 0 ? static_cast<uint32_t>(std::ceil(start_)) : 0; - uint32_t end = end_ > 0 ? static_cast<uint32_t>(std::ceil(end_)) : 0; - return Range(start, end); -} - -Range RangeF::Round() const { - uint32_t start = start_ > 0 ? static_cast<uint32_t>(std::round(start_)) : 0; - uint32_t end = end_ > 0 ? static_cast<uint32_t>(std::round(end_)) : 0; - return Range(start, end); -} - -std::string RangeF::ToString() const { - return base::StringPrintf("{%f,%f}", start(), end()); -} - -std::ostream& operator<<(std::ostream& os, const RangeF& range) { - return os << range.ToString(); -} - -} // namespace gfx diff --git a/ui/gfx/range/range_f.h b/ui/gfx/range/range_f.h deleted file mode 100644 index 1d58ad4..0000000 --- a/ui/gfx/range/range_f.h +++ /dev/null @@ -1,101 +0,0 @@ -// Copyright 2015 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. - -#ifndef UI_GFX_RANGE_RANGE_F_H_ -#define UI_GFX_RANGE_RANGE_F_H_ - -#include <limits> -#include <ostream> -#include <string> - -#include "ui/gfx/range/gfx_range_export.h" -#include "ui/gfx/range/range.h" - -namespace gfx { - -// A float version of Range. RangeF is made of a start and end position; when -// they are the same, the range is empty. Note that |start_| can be greater -// than |end_| to respect the directionality of the range. -class GFX_RANGE_EXPORT RangeF { - public: - // Creates an empty range {0,0}. - constexpr RangeF() : RangeF(0.f) {} - - // Initializes the range with a start and end. - constexpr RangeF(float start, float end) : start_(start), end_(end) {} - - // Initializes the range with the same start and end positions. - constexpr explicit RangeF(float position) : RangeF(position, position) {} - - // Returns a range that is invalid, which is {float_max,float_max}. - static constexpr RangeF InvalidRange() { - return RangeF(std::numeric_limits<float>::max()); - } - - // Checks if the range is valid through comparison to InvalidRange(). - constexpr bool IsValid() const { return *this != InvalidRange(); } - - // Getters and setters. - constexpr float start() const { return start_; } - void set_start(float start) { start_ = start; } - - constexpr float end() const { return end_; } - void set_end(float end) { end_ = end; } - - // Returns the absolute value of the length. - constexpr float length() const { return GetMax() - GetMin(); } - - constexpr bool is_reversed() const { return start() > end(); } - constexpr bool is_empty() const { return start() == end(); } - - // Returns the minimum and maximum values. - constexpr float GetMin() const { return start() < end() ? start() : end(); } - constexpr float GetMax() const { return start() > end() ? start() : end(); } - - constexpr bool operator==(const RangeF& other) const { - return start() == other.start() && end() == other.end(); - } - constexpr bool operator!=(const RangeF& other) const { - return !(*this == other); - } - constexpr bool EqualsIgnoringDirection(const RangeF& other) const { - return GetMin() == other.GetMin() && GetMax() == other.GetMax(); - } - - // Returns true if this range intersects the specified |range|. - constexpr bool Intersects(const RangeF& range) const { - return IsValid() && range.IsValid() && - !(range.GetMax() < GetMin() || range.GetMin() >= GetMax()); - } - - // Returns true if this range contains the specified |range|. - constexpr bool Contains(const RangeF& range) const { - return IsValid() && range.IsValid() && GetMin() <= range.GetMin() && - range.GetMax() <= GetMax(); - } - - // Computes the intersection of this range with the given |range|. - // If they don't intersect, it returns an InvalidRange(). - // The returned range is always empty or forward (never reversed). - RangeF Intersect(const RangeF& range) const; - RangeF Intersect(const Range& range) const; - - // Floor/Ceil/Round the start and end values of the given RangeF. - Range Floor() const; - Range Ceil() const; - Range Round() const; - - std::string ToString() const; - - private: - float start_; - float end_; -}; - -GFX_RANGE_EXPORT std::ostream& operator<<(std::ostream& os, - const RangeF& range); - -} // namespace gfx - -#endif // UI_GFX_RANGE_RANGE_F_H_ diff --git a/ui/gfx/range/range_mac.mm b/ui/gfx/range/range_mac.mm deleted file mode 100644 index ad7ea6a..0000000 --- a/ui/gfx/range/range_mac.mm +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright (c) 2011 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/range/range.h" - -#include <stddef.h> - -#include <limits> - -#include "base/logging.h" - -namespace gfx { - -Range::Range(const NSRange& range) { - *this = range; -} - -Range& Range::operator=(const NSRange& range) { - if (range.location == NSNotFound) { - DCHECK_EQ(0U, range.length); - *this = InvalidRange(); - } else { - set_start(range.location); - // Don't overflow |end_|. - DCHECK_LE(range.length, std::numeric_limits<size_t>::max() - start()); - set_end(start() + range.length); - } - return *this; -} - -NSRange Range::ToNSRange() const { - if (!IsValid()) - return NSMakeRange(NSNotFound, 0); - return NSMakeRange(GetMin(), length()); -} - -} // namespace gfx diff --git a/ui/gfx/range/range_mac_unittest.mm b/ui/gfx/range/range_mac_unittest.mm deleted file mode 100644 index 85323f2..0000000 --- a/ui/gfx/range/range_mac_unittest.mm +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright (c) 2011 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 "testing/gtest/include/gtest/gtest.h" -#include "ui/gfx/range/range.h" - -TEST(RangeTest, FromNSRange) { - NSRange nsr = NSMakeRange(10, 3); - gfx::Range r(nsr); - EXPECT_EQ(nsr.location, r.start()); - EXPECT_EQ(13U, r.end()); - EXPECT_EQ(nsr.length, r.length()); - EXPECT_FALSE(r.is_reversed()); - EXPECT_TRUE(r.IsValid()); -} - -TEST(RangeTest, ToNSRange) { - gfx::Range r(10, 12); - NSRange nsr = r.ToNSRange(); - EXPECT_EQ(10U, nsr.location); - EXPECT_EQ(2U, nsr.length); -} - -TEST(RangeTest, ReversedToNSRange) { - gfx::Range r(20, 10); - NSRange nsr = r.ToNSRange(); - EXPECT_EQ(10U, nsr.location); - EXPECT_EQ(10U, nsr.length); -} - -TEST(RangeTest, FromNSRangeInvalid) { - NSRange nsr = NSMakeRange(NSNotFound, 0); - gfx::Range r(nsr); - EXPECT_FALSE(r.IsValid()); -} - -TEST(RangeTest, ToNSRangeInvalid) { - gfx::Range r(gfx::Range::InvalidRange()); - NSRange nsr = r.ToNSRange(); - EXPECT_EQ(static_cast<NSUInteger>(NSNotFound), nsr.location); - EXPECT_EQ(0U, nsr.length); -} diff --git a/ui/gfx/range/range_unittest.cc b/ui/gfx/range/range_unittest.cc deleted file mode 100644 index 4ae7a67..0000000 --- a/ui/gfx/range/range_unittest.cc +++ /dev/null @@ -1,266 +0,0 @@ -// Copyright (c) 2011 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 <sstream> - -#include "testing/gtest/include/gtest/gtest.h" -#include "ui/gfx/range/range.h" -#include "ui/gfx/range/range_f.h" - -namespace { - -template <typename T> -class RangeTest : public testing::Test { -}; - -typedef testing::Types<gfx::Range, gfx::RangeF> RangeTypes; -TYPED_TEST_CASE(RangeTest, RangeTypes); - -template <typename T> -void TestContainsAndIntersects(const T& r1, - const T& r2, - const T& r3) { - EXPECT_TRUE(r1.Intersects(r1)); - EXPECT_TRUE(r1.Contains(r1)); - EXPECT_EQ(T(10, 12), r1.Intersect(r1)); - - EXPECT_FALSE(r1.Intersects(r2)); - EXPECT_FALSE(r1.Contains(r2)); - EXPECT_TRUE(r1.Intersect(r2).is_empty()); - EXPECT_FALSE(r2.Intersects(r1)); - EXPECT_FALSE(r2.Contains(r1)); - EXPECT_TRUE(r2.Intersect(r1).is_empty()); - - EXPECT_TRUE(r1.Intersects(r3)); - EXPECT_TRUE(r3.Intersects(r1)); - EXPECT_TRUE(r3.Contains(r1)); - EXPECT_FALSE(r1.Contains(r3)); - EXPECT_EQ(T(10, 12), r1.Intersect(r3)); - EXPECT_EQ(T(10, 12), r3.Intersect(r1)); - - EXPECT_TRUE(r2.Intersects(r3)); - EXPECT_TRUE(r3.Intersects(r2)); - EXPECT_FALSE(r3.Contains(r2)); - EXPECT_FALSE(r2.Contains(r3)); - EXPECT_EQ(T(5, 8), r2.Intersect(r3)); - EXPECT_EQ(T(5, 8), r3.Intersect(r2)); -} - -} // namespace - -TYPED_TEST(RangeTest, EmptyInit) { - TypeParam r; - EXPECT_EQ(0U, r.start()); - EXPECT_EQ(0U, r.end()); - EXPECT_EQ(0U, r.length()); - EXPECT_FALSE(r.is_reversed()); - EXPECT_TRUE(r.is_empty()); - EXPECT_TRUE(r.IsValid()); - EXPECT_EQ(0U, r.GetMin()); - EXPECT_EQ(0U, r.GetMax()); -} - -TYPED_TEST(RangeTest, StartEndInit) { - TypeParam r(10, 15); - EXPECT_EQ(10U, r.start()); - EXPECT_EQ(15U, r.end()); - EXPECT_EQ(5U, r.length()); - EXPECT_FALSE(r.is_reversed()); - EXPECT_FALSE(r.is_empty()); - EXPECT_TRUE(r.IsValid()); - EXPECT_EQ(10U, r.GetMin()); - EXPECT_EQ(15U, r.GetMax()); -} - -TYPED_TEST(RangeTest, StartEndReversedInit) { - TypeParam r(10, 5); - EXPECT_EQ(10U, r.start()); - EXPECT_EQ(5U, r.end()); - EXPECT_EQ(5U, r.length()); - EXPECT_TRUE(r.is_reversed()); - EXPECT_FALSE(r.is_empty()); - EXPECT_TRUE(r.IsValid()); - EXPECT_EQ(5U, r.GetMin()); - EXPECT_EQ(10U, r.GetMax()); -} - -TYPED_TEST(RangeTest, PositionInit) { - TypeParam r(12); - EXPECT_EQ(12U, r.start()); - EXPECT_EQ(12U, r.end()); - EXPECT_EQ(0U, r.length()); - EXPECT_FALSE(r.is_reversed()); - EXPECT_TRUE(r.is_empty()); - EXPECT_TRUE(r.IsValid()); - EXPECT_EQ(12U, r.GetMin()); - EXPECT_EQ(12U, r.GetMax()); -} - -TYPED_TEST(RangeTest, InvalidRange) { - TypeParam r(TypeParam::InvalidRange()); - EXPECT_EQ(0U, r.length()); - EXPECT_EQ(r.start(), r.end()); - EXPECT_EQ(r.GetMax(), r.GetMin()); - EXPECT_FALSE(r.is_reversed()); - EXPECT_TRUE(r.is_empty()); - EXPECT_FALSE(r.IsValid()); - EXPECT_EQ(r, TypeParam::InvalidRange()); - EXPECT_TRUE(r.EqualsIgnoringDirection(TypeParam::InvalidRange())); -} - -TYPED_TEST(RangeTest, Equality) { - TypeParam r1(10, 4); - TypeParam r2(10, 4); - TypeParam r3(10, 2); - EXPECT_EQ(r1, r2); - EXPECT_NE(r1, r3); - EXPECT_NE(r2, r3); - - TypeParam r4(11, 4); - EXPECT_NE(r1, r4); - EXPECT_NE(r2, r4); - EXPECT_NE(r3, r4); - - TypeParam r5(12, 5); - EXPECT_NE(r1, r5); - EXPECT_NE(r2, r5); - EXPECT_NE(r3, r5); -} - -TYPED_TEST(RangeTest, EqualsIgnoringDirection) { - TypeParam r1(10, 5); - TypeParam r2(5, 10); - EXPECT_TRUE(r1.EqualsIgnoringDirection(r2)); -} - -TYPED_TEST(RangeTest, SetStart) { - TypeParam r(10, 20); - EXPECT_EQ(10U, r.start()); - EXPECT_EQ(10U, r.length()); - - r.set_start(42); - EXPECT_EQ(42U, r.start()); - EXPECT_EQ(20U, r.end()); - EXPECT_EQ(22U, r.length()); - EXPECT_TRUE(r.is_reversed()); -} - -TYPED_TEST(RangeTest, SetEnd) { - TypeParam r(10, 13); - EXPECT_EQ(10U, r.start()); - EXPECT_EQ(3U, r.length()); - - r.set_end(20); - EXPECT_EQ(10U, r.start()); - EXPECT_EQ(20U, r.end()); - EXPECT_EQ(10U, r.length()); -} - -TYPED_TEST(RangeTest, SetStartAndEnd) { - TypeParam r; - r.set_end(5); - r.set_start(1); - EXPECT_EQ(1U, r.start()); - EXPECT_EQ(5U, r.end()); - EXPECT_EQ(4U, r.length()); - EXPECT_EQ(1U, r.GetMin()); - EXPECT_EQ(5U, r.GetMax()); -} - -TYPED_TEST(RangeTest, ReversedRange) { - TypeParam r(10, 5); - EXPECT_EQ(10U, r.start()); - EXPECT_EQ(5U, r.end()); - EXPECT_EQ(5U, r.length()); - EXPECT_TRUE(r.is_reversed()); - EXPECT_TRUE(r.IsValid()); - EXPECT_EQ(5U, r.GetMin()); - EXPECT_EQ(10U, r.GetMax()); -} - -TYPED_TEST(RangeTest, SetReversedRange) { - TypeParam r(10, 20); - r.set_start(25); - EXPECT_EQ(25U, r.start()); - EXPECT_EQ(20U, r.end()); - EXPECT_EQ(5U, r.length()); - EXPECT_TRUE(r.is_reversed()); - EXPECT_TRUE(r.IsValid()); - - r.set_end(21); - EXPECT_EQ(25U, r.start()); - EXPECT_EQ(21U, r.end()); - EXPECT_EQ(4U, r.length()); - EXPECT_TRUE(r.IsValid()); - EXPECT_EQ(21U, r.GetMin()); - EXPECT_EQ(25U, r.GetMax()); -} - -TYPED_TEST(RangeTest, ContainAndIntersect) { - { - SCOPED_TRACE("contain and intersect"); - TypeParam r1(10, 12); - TypeParam r2(1, 8); - TypeParam r3(5, 12); - TestContainsAndIntersects(r1, r2, r3); - } - { - SCOPED_TRACE("contain and intersect: reversed"); - TypeParam r1(12, 10); - TypeParam r2(8, 1); - TypeParam r3(12, 5); - TestContainsAndIntersects(r1, r2, r3); - } - // Invalid rect tests - TypeParam r1(10, 12); - TypeParam r2(8, 1); - TypeParam invalid = r1.Intersect(r2); - EXPECT_FALSE(invalid.IsValid()); - EXPECT_FALSE(invalid.Contains(invalid)); - EXPECT_FALSE(invalid.Contains(r1)); - EXPECT_FALSE(invalid.Intersects(invalid)); - EXPECT_FALSE(invalid.Intersects(r1)); - EXPECT_FALSE(r1.Contains(invalid)); - EXPECT_FALSE(r1.Intersects(invalid)); -} - -TEST(RangeTest, RangeFConverterTest) { - gfx::RangeF range_f(1.2f, 3.9f); - gfx::Range range = range_f.Floor(); - EXPECT_EQ(1U, range.start()); - EXPECT_EQ(3U, range.end()); - - range = range_f.Ceil(); - EXPECT_EQ(2U, range.start()); - EXPECT_EQ(4U, range.end()); - - range = range_f.Round(); - EXPECT_EQ(1U, range.start()); - EXPECT_EQ(4U, range.end()); - - // Test for negative values. - range_f.set_start(-1.2f); - range_f.set_end(-3.8f); - range = range_f.Floor(); - EXPECT_EQ(0U, range.start()); - EXPECT_EQ(0U, range.end()); - - range = range_f.Ceil(); - EXPECT_EQ(0U, range.start()); - EXPECT_EQ(0U, range.end()); - - range = range_f.Round(); - EXPECT_EQ(0U, range.start()); - EXPECT_EQ(0U, range.end()); -} - -TEST(RangeTest, ToString) { - gfx::Range range(4, 7); - EXPECT_EQ("{4,7}", range.ToString()); - - range = gfx::Range::InvalidRange(); - std::ostringstream expected; - expected << "{" << range.start() << "," << range.end() << "}"; - EXPECT_EQ(expected.str(), range.ToString()); -} diff --git a/ui/gfx/range/range_win.cc b/ui/gfx/range/range_win.cc deleted file mode 100644 index 1180e1b..0000000 --- a/ui/gfx/range/range_win.cc +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright (c) 2011 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/range/range.h" - -#include <limits> - -#include "base/logging.h" - -namespace gfx { - -Range::Range(const CHARRANGE& range, LONG total_length) { - // Check if this is an invalid range. - if (range.cpMin == -1 && range.cpMax == -1) { - *this = InvalidRange(); - } else { - DCHECK_GE(range.cpMin, 0); - set_start(range.cpMin); - // {0,-1} is the "whole range" but that doesn't mean much out of context, - // so use the |total_length| parameter. - if (range.cpMax == -1) { - DCHECK_EQ(0, range.cpMin); - DCHECK_NE(-1, total_length); - set_end(total_length); - } else { - set_end(range.cpMax); - } - } -} - -CHARRANGE Range::ToCHARRANGE() const { - CHARRANGE r = { -1, -1 }; - if (!IsValid()) - return r; - - const LONG kLONGMax = std::numeric_limits<LONG>::max(); - CHECK_LE(static_cast<LONG>(start()), kLONGMax); - CHECK_LE(static_cast<LONG>(end()), kLONGMax); - r.cpMin = static_cast<LONG>(start()); - r.cpMax = static_cast<LONG>(end()); - return r; -} - -} // namespace gfx diff --git a/ui/gfx/range/range_win_unittest.cc b/ui/gfx/range/range_win_unittest.cc deleted file mode 100644 index d15375b..0000000 --- a/ui/gfx/range/range_win_unittest.cc +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright (c) 2011 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 "testing/gtest/include/gtest/gtest.h" -#include "ui/gfx/range/range.h" - -TEST(RangeTest, FromCHARRANGE) { - CHARRANGE cr = { 10, 32 }; - gfx::Range r(cr, 50); - EXPECT_EQ(10U, r.start()); - EXPECT_EQ(32U, r.end()); - EXPECT_EQ(22U, r.length()); - EXPECT_FALSE(r.is_reversed()); - EXPECT_TRUE(r.IsValid()); -} - -TEST(RangeTest, FromReversedCHARRANGE) { - CHARRANGE cr = { 20, 10 }; - gfx::Range r(cr, 40); - EXPECT_EQ(20U, r.start()); - EXPECT_EQ(10U, r.end()); - EXPECT_EQ(10U, r.length()); - EXPECT_TRUE(r.is_reversed()); - EXPECT_TRUE(r.IsValid()); -} - -TEST(RangeTest, FromCHARRANGETotal) { - CHARRANGE cr = { 0, -1 }; - gfx::Range r(cr, 20); - EXPECT_EQ(0U, r.start()); - EXPECT_EQ(20U, r.end()); - EXPECT_EQ(20U, r.length()); - EXPECT_FALSE(r.is_reversed()); - EXPECT_TRUE(r.IsValid()); -} - -TEST(RangeTest, ToCHARRANGE) { - gfx::Range r(10, 30); - CHARRANGE cr = r.ToCHARRANGE(); - EXPECT_EQ(10, cr.cpMin); - EXPECT_EQ(30, cr.cpMax); -} - -TEST(RangeTest, ReversedToCHARRANGE) { - gfx::Range r(20, 10); - CHARRANGE cr = r.ToCHARRANGE(); - EXPECT_EQ(20, cr.cpMin); - EXPECT_EQ(10, cr.cpMax); -} - -TEST(RangeTest, FromCHARRANGEInvalid) { - CHARRANGE cr = { -1, -1 }; - gfx::Range r(cr, 30); - EXPECT_FALSE(r.IsValid()); -} - -TEST(RangeTest, ToCHARRANGEInvalid) { - gfx::Range r(gfx::Range::InvalidRange()); - CHARRANGE cr = r.ToCHARRANGE(); - EXPECT_EQ(-1, cr.cpMin); - EXPECT_EQ(-1, cr.cpMax); -} |