diff options
author | Sushil Chauhan <sushilchauhan@codeaurora.org> | 2016-12-28 15:18:14 -0800 |
---|---|---|
committer | Sushil Chauhan <sushilchauhan@codeaurora.org> | 2016-12-29 14:54:24 -0800 |
commit | 0568ff18294d248df81c1abc3b37f6d3e0e81c64 (patch) | |
tree | 75b44ee7173d37c2a09ea67e8c613697ac57ff29 | |
parent | bf2b25c1064e856a69821d7e65148f3ed3544ee5 (diff) | |
download | display-0568ff18294d248df81c1abc3b37f6d3e0e81c64.tar.gz |
sdm: Add utils in SDM utils
Add LCM and GCD utilities in SDM utils.
CRs-Fixed: 1105754
Change-Id: Ib92807922faecdd51c224b5c4ba6421b85e62b8b
-rw-r--r-- | sdm/include/utils/utils.h | 41 | ||||
-rw-r--r-- | sdm/libs/utils/Android.mk | 8 | ||||
-rw-r--r-- | sdm/libs/utils/utils.cpp | 55 |
3 files changed, 101 insertions, 3 deletions
diff --git a/sdm/include/utils/utils.h b/sdm/include/utils/utils.h new file mode 100644 index 00000000..5f621ddf --- /dev/null +++ b/sdm/include/utils/utils.h @@ -0,0 +1,41 @@ +/* +* Copyright (c) 2016, The Linux Foundation. All rights reserved. +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions are +* met: +* * Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* * Redistributions in binary form must reproduce the above +* copyright notice, this list of conditions and the following +* disclaimer in the documentation and/or other materials provided +* with the distribution. +* * Neither the name of The Linux Foundation nor the names of its +* contributors may be used to endorse or promote products derived +* from this software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#ifndef __UTILS_H__ +#define __UTILS_H__ + +namespace sdm { + +float gcd(float a, float b); +float lcm(float a, float b); + +} // namespace sdm + +#endif // __UTILS_H__ + diff --git a/sdm/libs/utils/Android.mk b/sdm/libs/utils/Android.mk index ee95e485..f7f30a90 100644 --- a/sdm/libs/utils/Android.mk +++ b/sdm/libs/utils/Android.mk @@ -9,7 +9,8 @@ LOCAL_CFLAGS := -DLOG_TAG=\"SDM\" $(common_flags) LOCAL_SRC_FILES := debug.cpp \ rect.cpp \ sys.cpp \ - formats.cpp + formats.cpp \ + utils.cpp include $(BUILD_SHARED_LIBRARY) @@ -21,5 +22,6 @@ LOCAL_COPY_HEADERS = $(SDM_HEADER_PATH)/utils/constants.h \ $(SDM_HEADER_PATH)/utils/formats.h \ $(SDM_HEADER_PATH)/utils/locker.h \ $(SDM_HEADER_PATH)/utils/rect.h \ - $(SDM_HEADER_PATH)/utils/sys.h -include $(BUILD_COPY_HEADERS)
\ No newline at end of file + $(SDM_HEADER_PATH)/utils/sys.h \ + $(SDM_HEADER_PATH)/utils/utils.h +include $(BUILD_COPY_HEADERS) diff --git a/sdm/libs/utils/utils.cpp b/sdm/libs/utils/utils.cpp new file mode 100644 index 00000000..5d5ee195 --- /dev/null +++ b/sdm/libs/utils/utils.cpp @@ -0,0 +1,55 @@ +/* +* Copyright (c) 2016, The Linux Foundation. All rights reserved. +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions are +* met: +* * Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* * Redistributions in binary form must reproduce the above +* copyright notice, this list of conditions and the following +* disclaimer in the documentation and/or other materials provided +* with the distribution. +* * Neither the name of The Linux Foundation nor the names of its +* contributors may be used to endorse or promote products derived +* from this software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT +* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include <math.h> +#include <algorithm> + +#define __CLASS__ "Utils" + +namespace sdm { + +float gcd(float a, float b) { + if (a < b) { + std::swap(a, b); + } + + while (b != 0) { + float tmp = b; + b = fmodf(a, b); + a = tmp; + } + + return a; +} + +float lcm(float a, float b) { + return (a * b) / gcd(a, b); +} + +} // namespace sdm |