aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab+samsung@kernel.org>2018-12-23 13:34:20 -0200
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>2018-12-23 15:05:26 -0200
commit4ee19584c0cf1048d5cc813ec82f9be249411d3f (patch)
tree50f9cbc08cdb8d5f87a733e5671b77a0dcd8d0fd /src
parent8956d6f5df867e911203e06db97313f30f57a98b (diff)
Add zoom control
The icon was imported from gnome icon set (https://github.com/GNOME/gnome-icon-theme) before changeset e4fc9dade2d6411173bb84c0f1064eeac0b6a5fb, to ensure that it matches the license of camorama project (GPL 2). Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
Diffstat (limited to 'src')
-rw-r--r--src/callbacks.c7
-rw-r--r--src/callbacks.h1
-rw-r--r--src/camorama-window.c13
-rw-r--r--src/v4l.c8
-rw-r--r--src/v4l.h2
5 files changed, 30 insertions, 1 deletions
diff --git a/src/callbacks.c b/src/callbacks.c
index d2c9036..732b79c 100644
--- a/src/callbacks.c
+++ b/src/callbacks.c
@@ -762,6 +762,13 @@ void brightness_change(GtkScale *sc1, cam_t *cam)
v4l2_set_control(cam->dev, V4L2_CID_BRIGHTNESS, cam->brightness);
}
+void zoom_change(GtkScale *sc1, cam_t *cam)
+{
+
+ cam->zoom = 256 * (int)gtk_range_get_value((GtkRange *) sc1);
+ v4l2_set_control(cam->dev, V4L2_CID_ZOOM_ABSOLUTE, cam->zoom);
+}
+
void colour_change(GtkScale *sc1, cam_t *cam)
{
diff --git a/src/callbacks.h b/src/callbacks.h
index 273743c..6d1eb2f 100644
--- a/src/callbacks.h
+++ b/src/callbacks.h
@@ -65,6 +65,7 @@ void on_scale1_drag_data_received(GtkScale *, cam_t *);
void on_status_show(GtkWidget *, cam_t *);
void contrast_change(GtkScale *, cam_t *);
void brightness_change(GtkScale *, cam_t *);
+void zoom_change(GtkScale *, cam_t *);
void colour_change(GtkScale *, cam_t *);
void hue_change(GtkScale *, cam_t *);
void wb_change(GtkScale *, cam_t *);
diff --git a/src/camorama-window.c b/src/camorama-window.c
index 298e56d..8bebbde 100644
--- a/src/camorama-window.c
+++ b/src/camorama-window.c
@@ -313,6 +313,19 @@ void load_interface(cam_t *cam)
gtk_range_set_value((GtkRange *)GTK_WIDGET(gtk_builder_get_object(cam->xml, "color_slider")),
(int)(cam->colour / 256));
}
+ if (cam->zoom < 0) {
+ gtk_widget_hide(GTK_WIDGET(gtk_builder_get_object(cam->xml,
+ "zoom_icon")));
+ gtk_widget_hide(GTK_WIDGET(gtk_builder_get_object(cam->xml,
+ "zoom_label")));
+ gtk_widget_hide(GTK_WIDGET(gtk_builder_get_object(cam->xml,
+ "zoom_slider")));
+ } else {
+ g_signal_connect(gtk_builder_get_object(cam->xml, "zoom_slider"),
+ "value-changed", G_CALLBACK(zoom_change), cam);
+ gtk_range_set_value((GtkRange *)GTK_WIDGET(gtk_builder_get_object(cam->xml, "zoom_slider")),
+ (int)(cam->zoom / 256));
+ }
if (cam->hue < 0) {
gtk_widget_hide(GTK_WIDGET(gtk_builder_get_object(cam->xml,
"hue_icon")));
diff --git a/src/v4l.c b/src/v4l.c
index c5aa797..10c4494 100644
--- a/src/v4l.c
+++ b/src/v4l.c
@@ -297,6 +297,14 @@ void get_pic_info(cam_t *cam)
} else {
cam->colour = -1;
}
+ i = v4l2_get_control(cam->dev, V4L2_CID_ZOOM_ABSOLUTE);
+ if (i >= 0) {
+ cam->zoom = i;
+ if (cam->debug == TRUE)
+ printf("zoom = %d\n", cam->zoom);
+ } else {
+ cam->zoom = -1;
+ }
i = v4l2_get_control(cam->dev, V4L2_CID_CONTRAST);
if (i >= 0) {
cam->contrast = i;
diff --git a/src/v4l.h b/src/v4l.h
index 69df548..323f3db 100644
--- a/src/v4l.h
+++ b/src/v4l.h
@@ -55,7 +55,7 @@ typedef struct camera {
float scale;
CamoImageSize size;
char name[32];
- int contrast, brightness, whiteness, colour, hue, bytesperline;
+ int contrast, brightness, whiteness, colour, hue, zoom, bytesperline;
unsigned int pixformat;
int frame_number;

Privacy Policy