From: Antonio Ospite <ospite@studenti.unina.it>
Date: Wed, 21 Mar 2012 13:47:20 +0000 (+0100)
Subject: am7xxx: round scaled_height and scaled_width
X-Git-Tag: v0.1.0~1^2~7
X-Git-Url: https://git.ao2.it/libam7xxx.git/commitdiff_plain/7b5a3f952c23daed53a37422db0972950071fc55?ds=inline;hp=-c

am7xxx: round scaled_height and scaled_width

Round when converting from float to int, this is more like what the user
expects about image dimensions.
---

7b5a3f952c23daed53a37422db0972950071fc55
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index bec1d5c..e09a282 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -22,8 +22,10 @@ endif()
 install(TARGETS am7xxx-static
    DESTINATION "${CMAKE_INSTALL_PREFIX}/lib")
 
-target_link_libraries(am7xxx ${LIBUSB_1_LIBRARIES})
-target_link_libraries(am7xxx-static ${LIBUSB_1_LIBRARIES})
+find_library(MATH_LIB m)
+
+target_link_libraries(am7xxx ${MATH_LIB} ${LIBUSB_1_LIBRARIES})
+target_link_libraries(am7xxx-static ${MATH_LIB} ${LIBUSB_1_LIBRARIES})
 
 # Install the header files
 install(FILES "am7xxx.h"
diff --git a/src/am7xxx.c b/src/am7xxx.c
index 6574100..1035e23 100644
--- a/src/am7xxx.c
+++ b/src/am7xxx.c
@@ -22,6 +22,7 @@
 #include <stdarg.h>
 #include <errno.h>
 #include <libusb.h>
+#include <math.h>
 
 #include "am7xxx.h"
 #include "serialize.h"
@@ -734,14 +735,14 @@ int am7xxx_calc_scaled_image_dimensions(am7xxx_device *dev,
 		 */
 		debug(dev->ctx, "CASE 1, original image wider, adjust the scaled height\n");
 		*scaled_width = device_info.native_width;
-		*scaled_height = (unsigned int)(original_height / width_ratio);
+		*scaled_height = (unsigned int)lroundf(original_height / width_ratio);
 	} else if (width_ratio < height_ratio) {
 		/*
 		 * The input is proportionally "taller" than the device viewport
 		 * so its width needs to be adjusted
 		 */
 		debug(dev->ctx, "CASE 2 original image taller, adjust the scaled width\n");
-		*scaled_width = (unsigned int)(original_width / height_ratio);
+		*scaled_width = (unsigned int)lroundf(original_width / height_ratio);
 		*scaled_height = device_info.native_height;
 	} else {
 		debug(dev->ctx, "CASE 3, just rescale, same aspect ratio already\n");