From: 020535 <020535@07accd87-1e0b-0410-939d-c05d8a058e03> Date: Wed, 10 Jun 2009 23:53:40 +0000 (+0000) Subject: Qt Widget that handles webcams :D X-Git-Url: https://git.defcon.no/?a=commitdiff_plain;h=9158dfdfd5dca3cc29e6ec4421aef81aca971256;p=qopencamwidget Qt Widget that handles webcams :D Uses OpenCV to get the camera data. git-svn-id: https://dilbert.hig.no/svn/student/020535/qopencamwidget/trunk@170 07accd87-1e0b-0410-939d-c05d8a058e03 --- 9158dfdfd5dca3cc29e6ec4421aef81aca971256 diff --git a/Doxyfile b/Doxyfile new file mode 100644 index 0000000..9767692 --- /dev/null +++ b/Doxyfile @@ -0,0 +1,304 @@ +# Doxyfile 1.5.6 + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +DOXYFILE_ENCODING = UTF-8 +PROJECT_NAME = QOpenCamWidget +PROJECT_NUMBER = +OUTPUT_DIRECTORY = /home/jonl/qcv/doc +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = YES +STRIP_FROM_PATH = /home/jonl/qcv/ +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = NO +QT_AUTOBRIEF = NO +MULTILINE_CPP_IS_BRIEF = NO +DETAILS_AT_TOP = NO +INHERIT_DOCS = YES +SEPARATE_MEMBER_PAGES = NO +TAB_SIZE = 8 +ALIASES = +OPTIMIZE_OUTPUT_FOR_C = NO +OPTIMIZE_OUTPUT_JAVA = NO +OPTIMIZE_FOR_FORTRAN = NO +OPTIMIZE_OUTPUT_VHDL = NO +BUILTIN_STL_SUPPORT = NO +CPP_CLI_SUPPORT = NO +SIP_SUPPORT = NO +IDL_PROPERTY_SUPPORT = YES +DISTRIBUTE_GROUP_DOC = NO +SUBGROUPING = YES +TYPEDEF_HIDES_STRUCT = NO +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = YES +EXTRACT_PRIVATE = YES +EXTRACT_STATIC = YES +EXTRACT_LOCAL_CLASSES = YES +EXTRACT_LOCAL_METHODS = NO +EXTRACT_ANON_NSPACES = NO +HIDE_UNDOC_MEMBERS = NO +HIDE_UNDOC_CLASSES = NO +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = NO +CASE_SENSE_NAMES = YES +HIDE_SCOPE_NAMES = NO +SHOW_INCLUDE_FILES = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = YES +SORT_BRIEF_DOCS = NO +SORT_GROUP_NAMES = NO +SORT_BY_SCOPE_NAME = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = YES +SHOW_DIRECTORIES = NO +SHOW_FILES = YES +SHOW_NAMESPACES = YES +FILE_VERSION_FILTER = +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = NO +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = NO +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = /home/jonl/qcv +INPUT_ENCODING = UTF-8 +FILE_PATTERNS = *.c \ + *.cc \ + *.cxx \ + *.cpp \ + *.c++ \ + *.d \ + *.java \ + *.ii \ + *.ixx \ + *.ipp \ + *.i++ \ + *.inl \ + *.h \ + *.hh \ + *.hxx \ + *.hpp \ + *.h++ \ + *.idl \ + *.odl \ + *.cs \ + *.php \ + *.php3 \ + *.inc \ + *.m \ + *.mm \ + *.dox \ + *.py \ + *.f90 \ + *.f \ + *.vhd \ + *.vhdl \ + *.C \ + *.CC \ + *.C++ \ + *.II \ + *.I++ \ + *.H \ + *.HH \ + *.H++ \ + *.CS \ + *.PHP \ + *.PHP3 \ + *.M \ + *.MM \ + *.PY \ + *.F90 \ + *.F \ + *.VHD \ + *.VHDL +RECURSIVE = YES +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXCLUDE_SYMBOLS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = * +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = YES +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = YES +REFERENCES_RELATION = YES +REFERENCES_LINK_SOURCE = YES +USE_HTAGS = NO +VERBATIM_HEADERS = YES +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = NO +COLS_IN_ALPHA_INDEX = 5 +IGNORE_PREFIX = +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = NO +GENERATE_DOCSET = NO +DOCSET_FEEDNAME = "Doxygen generated docs" +DOCSET_BUNDLE_ID = org.doxygen.Project +HTML_DYNAMIC_SECTIONS = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +CHM_INDEX_ENCODING = +BINARY_TOC = NO +TOC_EXPAND = NO +DISABLE_INDEX = NO +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = ALL +TREEVIEW_WIDTH = 250 +FORMULA_FONTSIZE = 10 +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = NO +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = YES +USE_PDFLATEX = YES +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = YES +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = YES +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = NO +XML_OUTPUT = xml +XML_SCHEMA = +XML_DTD = +XML_PROGRAMLISTING = YES +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- +TAGFILES = +GENERATE_TAGFILE = +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = YES +MSCGEN_PATH = +HIDE_UNDOC_RELATIONS = YES +HAVE_DOT = NO +DOT_FONTNAME = FreeSans +DOT_FONTPATH = +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +GROUP_GRAPHS = YES +UML_LOOK = NO +TEMPLATE_RELATIONS = NO +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +CALL_GRAPH = NO +CALLER_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES +DOT_IMAGE_FORMAT = png +DOT_PATH = +DOTFILE_DIRS = +DOT_GRAPH_MAX_NODES = 50 +MAX_DOT_GRAPH_DEPTH = 1000 +DOT_TRANSPARENT = YES +DOT_MULTI_TARGETS = NO +GENERATE_LEGEND = YES +DOT_CLEANUP = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- +SEARCHENGINE = NO diff --git a/doc/html/annotated.html b/doc/html/annotated.html new file mode 100644 index 0000000..259c2b6 --- /dev/null +++ b/doc/html/annotated.html @@ -0,0 +1,33 @@ + +
+| QOpenCamWidget | |
| View |
1.5.6
+
+
diff --git a/doc/html/classQOpenCamWidget-members.html b/doc/html/classQOpenCamWidget-members.html
new file mode 100644
index 0000000..69534bb
--- /dev/null
+++ b/doc/html/classQOpenCamWidget-members.html
@@ -0,0 +1,47 @@
+
+
+| canvas | QOpenCamWidget | [private] |
| capture | QOpenCamWidget | [private] |
| frametimer | QOpenCamWidget | [private] |
| grabCapture(int source) | QOpenCamWidget | |
| grabFrame(void) | QOpenCamWidget | [slot] |
| imageReady(QImage snapshot) | QOpenCamWidget | [signal] |
| Ipl2QImage(const IplImage *img) | QOpenCamWidget | |
| layout | QOpenCamWidget | [private] |
| nextFrame | QOpenCamWidget | [private] |
| paintEvent(QPaintEvent *event) | QOpenCamWidget | |
| QOpenCamWidget(QWidget *parent=0) | QOpenCamWidget | |
| setSnapshotVisible(bool visible) | QOpenCamWidget | |
| startCapture(void) | QOpenCamWidget | |
| startSnap() | QOpenCamWidget | [slot] |
| trigger | QOpenCamWidget | [private] |
| trigger_active | QOpenCamWidget | [private] |
| ~QOpenCamWidget(void) | QOpenCamWidget |
1.5.6
+
+
diff --git a/doc/html/classQOpenCamWidget.html b/doc/html/classQOpenCamWidget.html
new file mode 100644
index 0000000..a9aecff
--- /dev/null
+++ b/doc/html/classQOpenCamWidget.html
@@ -0,0 +1,530 @@
+
+
+#include <qopencamwidget.h>
++ +
Public Slots | |
| void | grabFrame (void) |
| Grabs a frame and causes an update() when triggered. | |
| void | startSnap () |
| Trigger this slot to save a frame from the widget. | |
Signals | |
| void | imageReady (QImage snapshot) |
Public Member Functions | |
| QOpenCamWidget (QWidget *parent=0) | |
| Consctructs a QWidget based widget for displaying video coming from an OpenCV capture source. | |
| ~QOpenCamWidget (void) | |
| void | paintEvent (QPaintEvent *event) |
| A paint event is a request to repaint all or part of a widget. | |
| void | setSnapshotVisible (bool visible) |
| Changes the visibility of the optional built-in "Take snapshot" button. | |
| bool | grabCapture (int source) |
| Grabs an OpenCV video capture source. | |
| void | startCapture (void) |
| Starts up grabbing of video frames. | |
| QImage * | Ipl2QImage (const IplImage *img) |
| Converts from the OpenCV IplImage data structure to a QImage. | |
Private Attributes | |
| CvCapture * | capture |
| QTimer * | frametimer |
| QImage * | nextFrame |
| QLabel * | canvas |
| QVBoxLayout * | layout |
| QPushButton * | trigger |
| bool | trigger_active |
Definition at line 29 of file qopencamwidget.h.
+| QOpenCamWidget::QOpenCamWidget | +( | +QWidget * | + parent = 0 |
+ ) | ++ |
+Consctructs a QWidget based widget for displaying video coming from an OpenCV capture source. +
+Including webcam data in a Qt application can be problematic, at least as long as Phonon does not support webcams, and the Phonon GStreamer backend only supports simple pipelines.
+This class solves the complexity of adding a webcam view, by using the cross-platform available OpenCV library.
+Limitations, i.e. reasons to read this code and reimplement, are: saving or streaming video is not really available (unless you do repeated timer-triggered connections to the startSnap slot), the widget size is identical to the video source dimensions (it resizes the wodget using setMinimuSize to the video dimensions, and does not handle resizing to sizes above this dimension.
+A brief summary of how to use this class:
QOpenCamWidget *cw = new QOpenCamWidget(this); + if ( cw->grabCapture(-1) ) { + cw->setSnapshotVisible(true); + cw->startCapture(); + } + connect( cw, SIGNAL(imageReady(QImage)), this, SLOT(saveImage(QImage))); +
+
| *parent | The parent widget containing this widget, defaults to NULL. |
Definition at line 60 of file qopencamwidget.cpp.
+ +References canvas, frametimer, layout, nextFrame, trigger, and trigger_active.
+ +| QOpenCamWidget::~QOpenCamWidget | +( | +void | ++ | ) | ++ |
+ +
Definition at line 88 of file qopencamwidget.cpp.
+ + + ++
| void QOpenCamWidget::paintEvent | +( | +QPaintEvent * | +event | +) | ++ |
+A paint event is a request to repaint all or part of a widget. +
+It can happen for one of the following reasons:
+
Definition at line 144 of file qopencamwidget.cpp.
+ + + +| void QOpenCamWidget::setSnapshotVisible | +( | +bool | +visible | +) | ++ |
+Changes the visibility of the optional built-in "Take snapshot" button. +
+The widget contains a push-button that optionally can be displayed. When visible, this button is located at the bottom of the widget, and causes the SLOT QOpenCamWidget::startSnap to be triggered when clicked.
+
| visible | True makes the button display, and trigger, false turns the feature off. False, i.e. no button, is default. |
Definition at line 110 of file qopencamwidget.cpp.
+ +References layout, startSnap(), trigger, and trigger_active.
+ +Referenced by View::View().
+ +| bool QOpenCamWidget::grabCapture | +( | +int | +source | +) | ++ |
+Grabs an OpenCV video capture source. +
+By grabbing a source, it is meant to open the capture source, and have it ready to start streaming/capturing frames. Returns true on success, false on error. The grabCapture is separated from the constructor and/or frame-grabbing, so that you may do the error-checking you really should do before proceeding.
+
| source | The OpenCV capture source enumeration index to open |
Definition at line 183 of file qopencamwidget.cpp.
+ +References canvas, and capture.
+ +Referenced by View::View().
+ +| void QOpenCamWidget::startCapture | +( | +void | ++ | ) | ++ |
+Starts up grabbing of video frames. +
+The actual grabbing and displaying of video frames is performed by a QTimer triggering the SLOT QOpenCamWidget::grabFrame(). startCapture() sets up the timer running this captureFrame loop.
+The SLOT QOpenCamWidget::startSnap() is used to get image frames out from the widget for other uses, like saving or processing. This function relies on the timer created and configured by startCapture(), and as such, this function is the only permitted way to start the actual capture/streaming of video from the source. +
Definition at line 217 of file qopencamwidget.cpp.
+ +References frametimer, grabFrame(), and trigger.
+ +Referenced by View::View().
+ +| QImage * QOpenCamWidget::Ipl2QImage | +( | +const IplImage * | +img | +) | ++ |
+Converts from the OpenCV IplImage data structure to a QImage. +
+OpenCV uses a data strcuture calles IplImage, optimized for computer vision image processing tasks. This code was adapted from kcamwidget.cpp, part of the KDE SVN at playground/multimedia/kcam/kcamwidget.cpp
+In regard that the IplImage can be forced into a format that aligns well with a RBG888-format, the conversion becomes one of the shortes, simples IplImage->QImage I've seen.
+
| *img | The IplImage to be converted to a QImage. |
Definition at line 241 of file qopencamwidget.cpp.
+ +Referenced by grabFrame().
+ +| void QOpenCamWidget::grabFrame | +( | +void | ++ | ) | + [slot] |
+
+Grabs a frame and causes an update() when triggered. +
+This is the SLOT that actually reads the video source and causes the widget to display live video. Preferably this slot will never be called my any other signal that a timeout() on the frametimer, which is controlled by QOpenCamWidget::startCapture() +
Definition at line 266 of file qopencamwidget.cpp.
+ +References capture, Ipl2QImage(), and nextFrame.
+ +Referenced by startCapture().
+ +| void QOpenCamWidget::startSnap | +( | +void | ++ | ) | + [slot] |
+
+Trigger this slot to save a frame from the widget. +
+When this slot is triggered, the widgets capture loop is temporarily stopped, and the last displayed frame is "captured", and made available through the emitting of the class imageReady SIGNAL.
+With the "Take snapshot" button visible (setSnapshotVisible(true)), this SLOT is triggered when the user clicks on the trigger button. If you do not wish to use the internal trigger button, you will have to add a different mechanism to trigger this SLOT.
+It is possible, though I would not recommend, to use repeated triggering of this slot to do repeated frame-capture, and thus make a form of "Animation" or "Video" capture. +
Definition at line 306 of file qopencamwidget.cpp.
+ +References frametimer, imageReady(), and nextFrame.
+ +Referenced by setSnapshotVisible().
+ +| void QOpenCamWidget::imageReady | +( | +QImage | +snapshot | +) | + [signal] |
+
+ +
Referenced by startSnap().
+ ++
CvCapture* QOpenCamWidget::capture [private] |
+
+ +
Definition at line 35 of file qopencamwidget.h.
+ +Referenced by grabCapture(), grabFrame(), and ~QOpenCamWidget().
+ +QTimer* QOpenCamWidget::frametimer [private] |
+
+ +
Definition at line 36 of file qopencamwidget.h.
+ +Referenced by QOpenCamWidget(), startCapture(), and startSnap().
+ +QImage* QOpenCamWidget::nextFrame [private] |
+
+ +
Definition at line 37 of file qopencamwidget.h.
+ +Referenced by grabFrame(), paintEvent(), QOpenCamWidget(), and startSnap().
+ +QLabel* QOpenCamWidget::canvas [private] |
+
+ +
Definition at line 39 of file qopencamwidget.h.
+ +Referenced by grabCapture(), paintEvent(), QOpenCamWidget(), and ~QOpenCamWidget().
+ +QVBoxLayout* QOpenCamWidget::layout [private] |
+
+ +
Definition at line 40 of file qopencamwidget.h.
+ +Referenced by QOpenCamWidget(), and setSnapshotVisible().
+ +QPushButton* QOpenCamWidget::trigger [private] |
+
+ +
Definition at line 41 of file qopencamwidget.h.
+ +Referenced by QOpenCamWidget(), setSnapshotVisible(), startCapture(), and ~QOpenCamWidget().
+ +bool QOpenCamWidget::trigger_active [private] |
+
+ +
Definition at line 42 of file qopencamwidget.h.
+ +Referenced by QOpenCamWidget(), and setSnapshotVisible().
+ ++
1.5.6
+
+
diff --git a/doc/html/classView-members.html b/doc/html/classView-members.html
new file mode 100644
index 0000000..ad6d22b
--- /dev/null
+++ b/doc/html/classView-members.html
@@ -0,0 +1,33 @@
+
+
+| saveImage(QImage image) | View | [slot] |
| View(QWidget *parent=0) | View | |
| ~View(void) | View |
1.5.6
+
+
diff --git a/doc/html/classView.html b/doc/html/classView.html
new file mode 100644
index 0000000..cd6ff9e
--- /dev/null
+++ b/doc/html/classView.html
@@ -0,0 +1,121 @@
+
+
+#include <view.h>
++ +
Public Slots | |
| void | saveImage (QImage image) |
Public Member Functions | |
| View (QWidget *parent=0) | |
| ~View (void) | |
Definition at line 5 of file view.h.
+| View::View | +( | +QWidget * | + parent = 0 |
+ ) | ++ |
+ +
Definition at line 32 of file view.cpp.
+ +References QOpenCamWidget::grabCapture(), saveImage(), QOpenCamWidget::setSnapshotVisible(), and QOpenCamWidget::startCapture().
+ ++
| void View::saveImage | +( | +QImage | +image | +) | + [slot] |
+
+
1.5.6
+
+
diff --git a/doc/html/doxygen.css b/doc/html/doxygen.css
new file mode 100644
index 0000000..22c4843
--- /dev/null
+++ b/doc/html/doxygen.css
@@ -0,0 +1,473 @@
+BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV {
+ font-family: Geneva, Arial, Helvetica, sans-serif;
+}
+BODY,TD {
+ font-size: 90%;
+}
+H1 {
+ text-align: center;
+ font-size: 160%;
+}
+H2 {
+ font-size: 120%;
+}
+H3 {
+ font-size: 100%;
+}
+CAPTION {
+ font-weight: bold
+}
+DIV.qindex {
+ width: 100%;
+ background-color: #e8eef2;
+ border: 1px solid #84b0c7;
+ text-align: center;
+ margin: 2px;
+ padding: 2px;
+ line-height: 140%;
+}
+DIV.navpath {
+ width: 100%;
+ background-color: #e8eef2;
+ border: 1px solid #84b0c7;
+ text-align: center;
+ margin: 2px;
+ padding: 2px;
+ line-height: 140%;
+}
+DIV.navtab {
+ background-color: #e8eef2;
+ border: 1px solid #84b0c7;
+ text-align: center;
+ margin: 2px;
+ margin-right: 15px;
+ padding: 2px;
+}
+TD.navtab {
+ font-size: 70%;
+}
+A.qindex {
+ text-decoration: none;
+ font-weight: bold;
+ color: #1A419D;
+}
+A.qindex:visited {
+ text-decoration: none;
+ font-weight: bold;
+ color: #1A419D
+}
+A.qindex:hover {
+ text-decoration: none;
+ background-color: #ddddff;
+}
+A.qindexHL {
+ text-decoration: none;
+ font-weight: bold;
+ background-color: #6666cc;
+ color: #ffffff;
+ border: 1px double #9295C2;
+}
+A.qindexHL:hover {
+ text-decoration: none;
+ background-color: #6666cc;
+ color: #ffffff;
+}
+A.qindexHL:visited {
+ text-decoration: none;
+ background-color: #6666cc;
+ color: #ffffff
+}
+A.el {
+ text-decoration: none;
+ font-weight: bold
+}
+A.elRef {
+ font-weight: bold
+}
+A.code:link {
+ text-decoration: none;
+ font-weight: normal;
+ color: #0000FF
+}
+A.code:visited {
+ text-decoration: none;
+ font-weight: normal;
+ color: #0000FF
+}
+A.codeRef:link {
+ font-weight: normal;
+ color: #0000FF
+}
+A.codeRef:visited {
+ font-weight: normal;
+ color: #0000FF
+}
+A:hover {
+ text-decoration: none;
+ background-color: #f2f2ff
+}
+DL.el {
+ margin-left: -1cm
+}
+.fragment {
+ font-family: monospace, fixed;
+ font-size: 95%;
+}
+PRE.fragment {
+ border: 1px solid #CCCCCC;
+ background-color: #f5f5f5;
+ margin-top: 4px;
+ margin-bottom: 4px;
+ margin-left: 2px;
+ margin-right: 8px;
+ padding-left: 6px;
+ padding-right: 6px;
+ padding-top: 4px;
+ padding-bottom: 4px;
+}
+DIV.ah {
+ background-color: black;
+ font-weight: bold;
+ color: #ffffff;
+ margin-bottom: 3px;
+ margin-top: 3px
+}
+
+DIV.groupHeader {
+ margin-left: 16px;
+ margin-top: 12px;
+ margin-bottom: 6px;
+ font-weight: bold;
+}
+DIV.groupText {
+ margin-left: 16px;
+ font-style: italic;
+ font-size: 90%
+}
+BODY {
+ background: white;
+ color: black;
+ margin-right: 20px;
+ margin-left: 20px;
+}
+TD.indexkey {
+ background-color: #e8eef2;
+ font-weight: bold;
+ padding-right : 10px;
+ padding-top : 2px;
+ padding-left : 10px;
+ padding-bottom : 2px;
+ margin-left : 0px;
+ margin-right : 0px;
+ margin-top : 2px;
+ margin-bottom : 2px;
+ border: 1px solid #CCCCCC;
+}
+TD.indexvalue {
+ background-color: #e8eef2;
+ font-style: italic;
+ padding-right : 10px;
+ padding-top : 2px;
+ padding-left : 10px;
+ padding-bottom : 2px;
+ margin-left : 0px;
+ margin-right : 0px;
+ margin-top : 2px;
+ margin-bottom : 2px;
+ border: 1px solid #CCCCCC;
+}
+TR.memlist {
+ background-color: #f0f0f0;
+}
+P.formulaDsp {
+ text-align: center;
+}
+IMG.formulaDsp {
+}
+IMG.formulaInl {
+ vertical-align: middle;
+}
+SPAN.keyword { color: #008000 }
+SPAN.keywordtype { color: #604020 }
+SPAN.keywordflow { color: #e08000 }
+SPAN.comment { color: #800000 }
+SPAN.preprocessor { color: #806020 }
+SPAN.stringliteral { color: #002080 }
+SPAN.charliteral { color: #008080 }
+SPAN.vhdldigit { color: #ff00ff }
+SPAN.vhdlchar { color: #000000 }
+SPAN.vhdlkeyword { color: #700070 }
+SPAN.vhdllogic { color: #ff0000 }
+
+.mdescLeft {
+ padding: 0px 8px 4px 8px;
+ font-size: 80%;
+ font-style: italic;
+ background-color: #FAFAFA;
+ border-top: 1px none #E0E0E0;
+ border-right: 1px none #E0E0E0;
+ border-bottom: 1px none #E0E0E0;
+ border-left: 1px none #E0E0E0;
+ margin: 0px;
+}
+.mdescRight {
+ padding: 0px 8px 4px 8px;
+ font-size: 80%;
+ font-style: italic;
+ background-color: #FAFAFA;
+ border-top: 1px none #E0E0E0;
+ border-right: 1px none #E0E0E0;
+ border-bottom: 1px none #E0E0E0;
+ border-left: 1px none #E0E0E0;
+ margin: 0px;
+}
+.memItemLeft {
+ padding: 1px 0px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: solid;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.memItemRight {
+ padding: 1px 8px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: solid;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.memTemplItemLeft {
+ padding: 1px 0px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: none;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.memTemplItemRight {
+ padding: 1px 8px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: none;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.memTemplParams {
+ padding: 1px 0px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-top-style: solid;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ color: #606060;
+ background-color: #FAFAFA;
+ font-size: 80%;
+}
+.search {
+ color: #003399;
+ font-weight: bold;
+}
+FORM.search {
+ margin-bottom: 0px;
+ margin-top: 0px;
+}
+INPUT.search {
+ font-size: 75%;
+ color: #000080;
+ font-weight: normal;
+ background-color: #e8eef2;
+}
+TD.tiny {
+ font-size: 75%;
+}
+a {
+ color: #1A41A8;
+}
+a:visited {
+ color: #2A3798;
+}
+.dirtab {
+ padding: 4px;
+ border-collapse: collapse;
+ border: 1px solid #84b0c7;
+}
+TH.dirtab {
+ background: #e8eef2;
+ font-weight: bold;
+}
+HR {
+ height: 1px;
+ border: none;
+ border-top: 1px solid black;
+}
+
+/* Style for detailed member documentation */
+.memtemplate {
+ font-size: 80%;
+ color: #606060;
+ font-weight: normal;
+ margin-left: 3px;
+}
+.memnav {
+ background-color: #e8eef2;
+ border: 1px solid #84b0c7;
+ text-align: center;
+ margin: 2px;
+ margin-right: 15px;
+ padding: 2px;
+}
+.memitem {
+ padding: 4px;
+ background-color: #eef3f5;
+ border-width: 1px;
+ border-style: solid;
+ border-color: #dedeee;
+ -moz-border-radius: 8px 8px 8px 8px;
+}
+.memname {
+ white-space: nowrap;
+ font-weight: bold;
+}
+.memdoc{
+ padding-left: 10px;
+}
+.memproto {
+ background-color: #d5e1e8;
+ width: 100%;
+ border-width: 1px;
+ border-style: solid;
+ border-color: #84b0c7;
+ font-weight: bold;
+ -moz-border-radius: 8px 8px 8px 8px;
+}
+.paramkey {
+ text-align: right;
+}
+.paramtype {
+ white-space: nowrap;
+}
+.paramname {
+ color: #602020;
+ font-style: italic;
+ white-space: nowrap;
+}
+/* End Styling for detailed member documentation */
+
+/* for the tree view */
+.ftvtree {
+ font-family: sans-serif;
+ margin:0.5em;
+}
+/* these are for tree view when used as main index */
+.directory {
+ font-size: 9pt;
+ font-weight: bold;
+}
+.directory h3 {
+ margin: 0px;
+ margin-top: 1em;
+ font-size: 11pt;
+}
+
+/* The following two styles can be used to replace the root node title */
+/* with an image of your choice. Simply uncomment the next two styles, */
+/* specify the name of your image and be sure to set 'height' to the */
+/* proper pixel height of your image. */
+
+/* .directory h3.swap { */
+/* height: 61px; */
+/* background-repeat: no-repeat; */
+/* background-image: url("yourimage.gif"); */
+/* } */
+/* .directory h3.swap span { */
+/* display: none; */
+/* } */
+
+.directory > h3 {
+ margin-top: 0;
+}
+.directory p {
+ margin: 0px;
+ white-space: nowrap;
+}
+.directory div {
+ display: none;
+ margin: 0px;
+}
+.directory img {
+ vertical-align: -30%;
+}
+/* these are for tree view when not used as main index */
+.directory-alt {
+ font-size: 100%;
+ font-weight: bold;
+}
+.directory-alt h3 {
+ margin: 0px;
+ margin-top: 1em;
+ font-size: 11pt;
+}
+.directory-alt > h3 {
+ margin-top: 0;
+}
+.directory-alt p {
+ margin: 0px;
+ white-space: nowrap;
+}
+.directory-alt div {
+ display: none;
+ margin: 0px;
+}
+.directory-alt img {
+ vertical-align: -30%;
+}
+
diff --git a/doc/html/doxygen.png b/doc/html/doxygen.png
new file mode 100644
index 0000000..f0a274b
Binary files /dev/null and b/doc/html/doxygen.png differ
diff --git a/doc/html/files.html b/doc/html/files.html
new file mode 100644
index 0000000..33f0314
--- /dev/null
+++ b/doc/html/files.html
@@ -0,0 +1,36 @@
+
+
+| main.cpp [code] | |
| qopencamwidget.cpp [code] | |
| qopencamwidget.h [code] | |
| view.cpp [code] | |
| view.h [code] |
1.5.6
+
+
diff --git a/doc/html/ftv2blank.png b/doc/html/ftv2blank.png
new file mode 100644
index 0000000..493c3c0
Binary files /dev/null and b/doc/html/ftv2blank.png differ
diff --git a/doc/html/ftv2doc.png b/doc/html/ftv2doc.png
new file mode 100644
index 0000000..f72999f
Binary files /dev/null and b/doc/html/ftv2doc.png differ
diff --git a/doc/html/ftv2folderclosed.png b/doc/html/ftv2folderclosed.png
new file mode 100644
index 0000000..d6d0634
Binary files /dev/null and b/doc/html/ftv2folderclosed.png differ
diff --git a/doc/html/ftv2folderopen.png b/doc/html/ftv2folderopen.png
new file mode 100644
index 0000000..bbe2c91
Binary files /dev/null and b/doc/html/ftv2folderopen.png differ
diff --git a/doc/html/ftv2lastnode.png b/doc/html/ftv2lastnode.png
new file mode 100644
index 0000000..e7b9ba9
Binary files /dev/null and b/doc/html/ftv2lastnode.png differ
diff --git a/doc/html/ftv2link.png b/doc/html/ftv2link.png
new file mode 100644
index 0000000..14f3fed
Binary files /dev/null and b/doc/html/ftv2link.png differ
diff --git a/doc/html/ftv2mlastnode.png b/doc/html/ftv2mlastnode.png
new file mode 100644
index 0000000..09ceb6a
Binary files /dev/null and b/doc/html/ftv2mlastnode.png differ
diff --git a/doc/html/ftv2mnode.png b/doc/html/ftv2mnode.png
new file mode 100644
index 0000000..3254c05
Binary files /dev/null and b/doc/html/ftv2mnode.png differ
diff --git a/doc/html/ftv2node.png b/doc/html/ftv2node.png
new file mode 100644
index 0000000..c9f06a5
Binary files /dev/null and b/doc/html/ftv2node.png differ
diff --git a/doc/html/ftv2plastnode.png b/doc/html/ftv2plastnode.png
new file mode 100644
index 0000000..0b07e00
Binary files /dev/null and b/doc/html/ftv2plastnode.png differ
diff --git a/doc/html/ftv2pnode.png b/doc/html/ftv2pnode.png
new file mode 100644
index 0000000..2001b79
Binary files /dev/null and b/doc/html/ftv2pnode.png differ
diff --git a/doc/html/ftv2vertline.png b/doc/html/ftv2vertline.png
new file mode 100644
index 0000000..b330f3a
Binary files /dev/null and b/doc/html/ftv2vertline.png differ
diff --git a/doc/html/functions.html b/doc/html/functions.html
new file mode 100644
index 0000000..12325d4
--- /dev/null
+++ b/doc/html/functions.html
@@ -0,0 +1,80 @@
+
+
++
1.5.6
+
+
diff --git a/doc/html/functions_func.html b/doc/html/functions_func.html
new file mode 100644
index 0000000..bb21470
--- /dev/null
+++ b/doc/html/functions_func.html
@@ -0,0 +1,66 @@
+
+
++
1.5.6
+
+
diff --git a/doc/html/functions_vars.html b/doc/html/functions_vars.html
new file mode 100644
index 0000000..1964345
--- /dev/null
+++ b/doc/html/functions_vars.html
@@ -0,0 +1,54 @@
+
+
++
1.5.6
+
+
diff --git a/doc/html/globals.html b/doc/html/globals.html
new file mode 100644
index 0000000..c8020b5
--- /dev/null
+++ b/doc/html/globals.html
@@ -0,0 +1,41 @@
+
+
++
1.5.6
+
+
diff --git a/doc/html/globals_func.html b/doc/html/globals_func.html
new file mode 100644
index 0000000..899a60d
--- /dev/null
+++ b/doc/html/globals_func.html
@@ -0,0 +1,41 @@
+
+
++
1.5.6
+
+
diff --git a/doc/html/index.html b/doc/html/index.html
new file mode 100644
index 0000000..325a8bd
--- /dev/null
+++ b/doc/html/index.html
@@ -0,0 +1,11 @@
+
+
++
1.5.6
+
+
diff --git a/doc/html/main_8cpp-source.html b/doc/html/main_8cpp-source.html
new file mode 100644
index 0000000..dbf4f5f
--- /dev/null
+++ b/doc/html/main_8cpp-source.html
@@ -0,0 +1,57 @@
+
+
+
1.5.6
+
+
diff --git a/doc/html/main_8cpp.html b/doc/html/main_8cpp.html
new file mode 100644
index 0000000..180ec03
--- /dev/null
+++ b/doc/html/main_8cpp.html
@@ -0,0 +1,65 @@
+
+
+#include <QtGui/QApplication>#include "view.h"+Go to the source code of this file.
Functions | |
| int | main (int argc, char *argv[]) |
| int main | +( | +int | +argc, | +|
| + | + | char * | +argv[] | + |
| + | ) | ++ |
+
1.5.6
+
+
diff --git a/doc/html/qopencamwidget_8cpp-source.html b/doc/html/qopencamwidget_8cpp-source.html
new file mode 100644
index 0000000..6086746
--- /dev/null
+++ b/doc/html/qopencamwidget_8cpp-source.html
@@ -0,0 +1,217 @@
+
+
+
1.5.6
+
+
diff --git a/doc/html/qopencamwidget_8cpp.html b/doc/html/qopencamwidget_8cpp.html
new file mode 100644
index 0000000..58696cc
--- /dev/null
+++ b/doc/html/qopencamwidget_8cpp.html
@@ -0,0 +1,29 @@
+
+
+#include "qopencamwidget.h"+Go to the source code of this file.
1.5.6
+
+
diff --git a/doc/html/qopencamwidget_8h-source.html b/doc/html/qopencamwidget_8h-source.html
new file mode 100644
index 0000000..2380488
--- /dev/null
+++ b/doc/html/qopencamwidget_8h-source.html
@@ -0,0 +1,87 @@
+
+
+
1.5.6
+
+
diff --git a/doc/html/qopencamwidget_8h.html b/doc/html/qopencamwidget_8h.html
new file mode 100644
index 0000000..07f0115
--- /dev/null
+++ b/doc/html/qopencamwidget_8h.html
@@ -0,0 +1,34 @@
+
+
+#include <QtGui>#include <opencv/cv.h>#include <opencv/highgui.h>+Go to the source code of this file.
Classes | |
| class | QOpenCamWidget |
1.5.6
+
+
diff --git a/doc/html/tab_b.gif b/doc/html/tab_b.gif
new file mode 100644
index 0000000..0d62348
Binary files /dev/null and b/doc/html/tab_b.gif differ
diff --git a/doc/html/tab_l.gif b/doc/html/tab_l.gif
new file mode 100644
index 0000000..9b1e633
Binary files /dev/null and b/doc/html/tab_l.gif differ
diff --git a/doc/html/tab_r.gif b/doc/html/tab_r.gif
new file mode 100644
index 0000000..ce9dd9f
Binary files /dev/null and b/doc/html/tab_r.gif differ
diff --git a/doc/html/tabs.css b/doc/html/tabs.css
new file mode 100644
index 0000000..95f00a9
--- /dev/null
+++ b/doc/html/tabs.css
@@ -0,0 +1,102 @@
+/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */
+
+DIV.tabs
+{
+ float : left;
+ width : 100%;
+ background : url("tab_b.gif") repeat-x bottom;
+ margin-bottom : 4px;
+}
+
+DIV.tabs UL
+{
+ margin : 0px;
+ padding-left : 10px;
+ list-style : none;
+}
+
+DIV.tabs LI, DIV.tabs FORM
+{
+ display : inline;
+ margin : 0px;
+ padding : 0px;
+}
+
+DIV.tabs FORM
+{
+ float : right;
+}
+
+DIV.tabs A
+{
+ float : left;
+ background : url("tab_r.gif") no-repeat right top;
+ border-bottom : 1px solid #84B0C7;
+ font-size : x-small;
+ font-weight : bold;
+ text-decoration : none;
+}
+
+DIV.tabs A:hover
+{
+ background-position: 100% -150px;
+}
+
+DIV.tabs A:link, DIV.tabs A:visited,
+DIV.tabs A:active, DIV.tabs A:hover
+{
+ color: #1A419D;
+}
+
+DIV.tabs SPAN
+{
+ float : left;
+ display : block;
+ background : url("tab_l.gif") no-repeat left top;
+ padding : 5px 9px;
+ white-space : nowrap;
+}
+
+DIV.tabs INPUT
+{
+ float : right;
+ display : inline;
+ font-size : 1em;
+}
+
+DIV.tabs TD
+{
+ font-size : x-small;
+ font-weight : bold;
+ text-decoration : none;
+}
+
+
+
+/* Commented Backslash Hack hides rule from IE5-Mac \*/
+DIV.tabs SPAN {float : none;}
+/* End IE5-Mac hack */
+
+DIV.tabs A:hover SPAN
+{
+ background-position: 0% -150px;
+}
+
+DIV.tabs LI.current A
+{
+ background-position: 100% -150px;
+ border-width : 0px;
+}
+
+DIV.tabs LI.current SPAN
+{
+ background-position: 0% -150px;
+ padding-bottom : 6px;
+}
+
+DIV.navpath
+{
+ background : none;
+ border : none;
+ border-bottom : 1px solid #84B0C7;
+}
diff --git a/doc/html/tree.html b/doc/html/tree.html
new file mode 100644
index 0000000..a36c826
--- /dev/null
+++ b/doc/html/tree.html
@@ -0,0 +1,83 @@
+
+
+
+
+
+
+
1.5.6
+
+
diff --git a/doc/html/view_8cpp.html b/doc/html/view_8cpp.html
new file mode 100644
index 0000000..c3958a2
--- /dev/null
+++ b/doc/html/view_8cpp.html
@@ -0,0 +1,30 @@
+
+
+#include "view.h"#include "qopencamwidget.h"+Go to the source code of this file.
1.5.6
+
+
diff --git a/doc/html/view_8h-source.html b/doc/html/view_8h-source.html
new file mode 100644
index 0000000..2f22f0d
--- /dev/null
+++ b/doc/html/view_8h-source.html
@@ -0,0 +1,39 @@
+
+
+
1.5.6
+
+
diff --git a/doc/html/view_8h.html b/doc/html/view_8h.html
new file mode 100644
index 0000000..49666b2
--- /dev/null
+++ b/doc/html/view_8h.html
@@ -0,0 +1,32 @@
+
+
+#include <QtGui>+Go to the source code of this file.
Classes | |
| class | View |
1.5.6
+
+
diff --git a/doc/man/man3/QOpenCamWidget.3 b/doc/man/man3/QOpenCamWidget.3
new file mode 100644
index 0000000..3758b7e
--- /dev/null
+++ b/doc/man/man3/QOpenCamWidget.3
@@ -0,0 +1,286 @@
+.TH "QOpenCamWidget" 3 "11 Jun 2009" "QOpenCamWidget" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+QOpenCamWidget \-
+.SH SYNOPSIS
+.br
+.PP
+\fC#include