📄 greyscale.c
字号:
#include <unistd.h>#include <stdlib.h>#include <string.h>#include <getopt.h>#include <sys/types.h>#include <sys/stat.h>#include <sys/ioctl.h>#include <sys/mman.h>#include <fcntl.h>#include <pthread.h>#include <linux/types.h> #include <gtk/gtk.h>#include <linux/videodev.h>#include <png.h>#include "gqcam.h"#include "frontend.h"#include "greyscale.h"void create_controls_greyscale(struct Camera *camera) { /* GtkWidget *outerbox; GtkWidget *innerbox; GtkWidget *scalebox; GtkWidget *sizedepthbox; GtkWidget *frame; GtkObject *adjbrightness; GtkWidget *scalebrightness; GtkObject *adjwhite; GtkWidget *scalewhite; GtkObject *adjcontrast; GtkWidget *scalecontrast; GtkWidget *radiobutton; GSList *radiogroup; GtkWidget *button; */ /* Create new outerbox */ camera->controltop = gtk_hbox_new (FALSE, 0); /* Create scalebox */ camera->controls.scalebox = gtk_vbox_new (FALSE, 2); gtk_widget_set_usize (GTK_WIDGET(camera->controls.scalebox), 240, 150); gtk_box_pack_start( GTK_BOX (camera->controltop), camera->controls.scalebox, 1, 1, 0); gtk_widget_show (camera->controls.scalebox); /* Create Brightness Scale */ camera->controls.frame = gtk_frame_new("Brightness"); gtk_box_pack_start( GTK_BOX (camera->controls.scalebox), camera->controls.frame, 1, 1, 0); gtk_widget_show (camera->controls.frame); camera->controls.adjbrightness = gtk_adjustment_new(camera->vid_pic.brightness/256, 0, 255, 1, 10, 1); camera->controls.scalebrightness = gtk_hscale_new(GTK_ADJUSTMENT(camera->controls.adjbrightness)); gtk_signal_connect (GTK_OBJECT (camera->controls.adjbrightness), "value_changed", GTK_SIGNAL_FUNC (setbrightness), camera); gtk_scale_set_digits(GTK_SCALE(camera->controls.scalebrightness), 0); gtk_container_add (GTK_CONTAINER (camera->controls.frame), camera->controls.scalebrightness); gtk_widget_show (camera->controls.scalebrightness); /* Create White Balance Scale */ camera->controls.frame = gtk_frame_new("White Balance"); gtk_box_pack_start( GTK_BOX (camera->controls.scalebox), camera->controls.frame, 1, 1, 0); gtk_widget_show (camera->controls.frame); camera->controls.adjwhite = gtk_adjustment_new(camera->vid_pic.whiteness/256, 0, 255, 1, 10, 1); camera->controls.scalewhite = gtk_hscale_new(GTK_ADJUSTMENT(camera->controls.adjwhite)); gtk_signal_connect (GTK_OBJECT (camera->controls.adjwhite), "value_changed", GTK_SIGNAL_FUNC (setwhite), camera); gtk_scale_set_digits(GTK_SCALE(camera->controls.scalewhite), 0); gtk_container_add (GTK_CONTAINER (camera->controls.frame), camera->controls.scalewhite); gtk_widget_show (camera->controls.scalewhite); /* Create Contrast Scale */ camera->controls.frame = gtk_frame_new("Contrast"); gtk_box_pack_start( GTK_BOX (camera->controls.scalebox), camera->controls.frame, 1, 1, 0); gtk_widget_show (camera->controls.frame); camera->controls.adjcontrast = gtk_adjustment_new( camera->vid_pic.contrast/256, 0, 255, 1, 10, 1); camera->controls.scalecontrast = gtk_hscale_new(GTK_ADJUSTMENT(camera->controls.adjcontrast)); gtk_signal_connect (GTK_OBJECT (camera->controls.adjcontrast), "value_changed", GTK_SIGNAL_FUNC (setcontrast), camera); gtk_scale_set_digits(GTK_SCALE(camera->controls.scalecontrast), 0); gtk_container_add (GTK_CONTAINER (camera->controls.frame), camera->controls.scalecontrast); gtk_widget_show (camera->controls.scalecontrast); /* Create sizedepthbox */ camera->controls.sizedepthbox = gtk_vbox_new (FALSE, 0); gtk_box_pack_start( GTK_BOX (camera->controltop), camera->controls.sizedepthbox, 1, 1, 0); gtk_widget_show (camera->controls.sizedepthbox); /* This is the size... */ camera->controls.frame = gtk_frame_new("Size"); gtk_box_pack_start( GTK_BOX (camera->controls.sizedepthbox), camera->controls.frame, 1, 1, 0); gtk_widget_show (camera->controls.frame); camera->controls.innerbox = gtk_vbox_new (TRUE, 0); gtk_container_add (GTK_CONTAINER (camera->controls.frame), camera->controls.innerbox); gtk_widget_show (camera->controls.innerbox); camera->controls.radiobutton = gtk_radio_button_new_with_label (NULL, "Full"); gtk_box_pack_start (GTK_BOX (camera->controls.innerbox), camera->controls.radiobutton, TRUE, TRUE, 0); if (camera->vid_win.width == camera->vid_caps.maxwidth) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (camera->controls.radiobutton), TRUE); gtk_signal_connect(GTK_OBJECT (camera->controls.radiobutton), "pressed", GTK_SIGNAL_FUNC(setsizefull), camera); gtk_widget_show (camera->controls.radiobutton); camera->controls.radiogroup = gtk_radio_button_group (GTK_RADIO_BUTTON (camera->controls.radiobutton)); camera->controls.radiobutton = gtk_radio_button_new_with_label(camera->controls.radiogroup, "Half"); gtk_box_pack_start (GTK_BOX (camera->controls.innerbox), camera->controls.radiobutton, TRUE, TRUE, 0); if (camera->vid_win.width == (camera->vid_caps.maxwidth)/2) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (camera->controls.radiobutton), TRUE); gtk_signal_connect(GTK_OBJECT (camera->controls.radiobutton), "pressed", GTK_SIGNAL_FUNC(setsizehalf), camera); gtk_widget_show (camera->controls.radiobutton); camera->controls.radiobutton = gtk_radio_button_new_with_label( gtk_radio_button_group (GTK_RADIO_BUTTON (camera->controls.radiobutton)), "Quarter"); gtk_box_pack_start (GTK_BOX (camera->controls.innerbox), camera->controls.radiobutton, TRUE, TRUE, 0); if (camera->vid_win.width == (camera->vid_caps.maxwidth)/4) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (camera->controls.radiobutton), TRUE); gtk_signal_connect(GTK_OBJECT (camera->controls.radiobutton), "pressed", GTK_SIGNAL_FUNC(setsizequarter), camera); gtk_widget_show (camera->controls.radiobutton); /* ...and this is the depth */ camera->controls.frame = gtk_frame_new("Depth"); gtk_box_pack_start( GTK_BOX (camera->controls.sizedepthbox), camera->controls.frame, 1, 1, 0); gtk_widget_show (camera->controls.frame); camera->controls.innerbox = gtk_vbox_new (TRUE, 0); gtk_container_add (GTK_CONTAINER (camera->controls.frame), camera->controls.innerbox); gtk_widget_show (camera->controls.innerbox); camera->controls.radiobutton = gtk_radio_button_new_with_label (NULL, "4 bpp"); gtk_box_pack_start (GTK_BOX (camera->controls.innerbox), camera->controls.radiobutton, TRUE, TRUE, 0); if (camera->vid_pic.depth == 4) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (camera->controls.radiobutton), TRUE); gtk_signal_connect(GTK_OBJECT (camera->controls.radiobutton), "pressed", GTK_SIGNAL_FUNC(setdepth4), camera); gtk_widget_show (camera->controls.radiobutton); camera->controls.radiogroup = gtk_radio_button_group (GTK_RADIO_BUTTON (camera->controls.radiobutton)); camera->controls.radiobutton = gtk_radio_button_new_with_label(camera->controls.radiogroup, "6 bpp"); gtk_box_pack_start (GTK_BOX (camera->controls.innerbox), camera->controls.radiobutton, TRUE, TRUE, 0); if (camera->vid_pic.depth == 6) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (camera->controls.radiobutton), TRUE); gtk_signal_connect(GTK_OBJECT (camera->controls.radiobutton), "pressed", GTK_SIGNAL_FUNC(setdepth6), camera); gtk_widget_show (camera->controls.radiobutton); gtk_widget_show (camera->controltop);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -