00001 #include <gtk/gtk.h>
00002 #include "vapiOptions.h"
00003 #include "vapiOperationList.h"
00004 #include "vapiOperation.h"
00005 #include "vapiCameraSettings.h"
00006 #include "vapiCameraAcquisition.h"
00007 #include "vapiImagesAux.h"
00008 #ifndef VAPI_WITHOUT_INTERFACE
00009 #include "vapiGtkImages.h"
00010 #endif
00011 #include <highgui.h>
00012
00013 #define NumberOfImageOperations 2
00014
00015
00016
00017 void vapiOriginal (vImages * Images, vOptions * options,
00018 vMacroResult * PreviousResult);
00019
00020 void vapiImageSave (vImages * Images, vOptions * options,
00021 vMacroResult * PreviousResult);
00022
00023
00024 void
00025 vapiImageOperations ()
00026 {
00027 vEffect *Operation[NumberOfImageOperations];
00028
00029 Operation[0] =
00030 vapiOperationInit ("Repor Imagem", "Imagem", &vapiOriginal);
00031 vapiOperationSettingsSetHasOriginalOption (Operation[0]);
00032 vapiOperationSettingsSetOperationBriefDescription (Operation[0],
00033 "Possibilita a reposição da imagem original ou nova captura");
00034
00035
00036 Operation[1] = vapiOperationInit ("Guardar Imagem", "Imagem", &vapiImageSave);
00037 vapiOperationSettingsSetOperationBriefDescription (Operation[1],
00038 "Guarda uma imagem para ficheiro");
00039 vapiOperationSettingsSetOperationLongDescription (Operation[1],
00040 "Guarda a imagem actual ou a original para ficheiro. o ficheiro pode ser jpg, png, giff ou tif.");
00041
00042 vapiOperationSettingsSetChar (Operation[1], "Nome do Ficheiro", "Nome do ficheiro, preenchido como ficheiro.tipo");
00043
00044 vapiOperationSettingsSetChoose(Operation[1], "Qual a Imagem a Guardar?", "Escolher a imagem a guardar para ficheiro; Original ou Actual", 2, 0, "Actual", "Original");
00045 vapiOperationListAddOperation (Operation, NumberOfImageOperations);
00046 }
00047
00052 void
00053 vapiOriginal (vImages * Images, vOptions * options,
00054 vMacroResult * PreviousResult)
00055 {
00056 vImages * GlobalImages = vapiImagesGlobalRetrieve();
00057 vCameraSettings *CameraSettings;
00058 if (((vEffectOptions *) options->CustomOptions)->original)
00059 {
00060 vImagesFreeActual (Images);
00061 vapiOriginal2Actual (Images);
00062 }
00063 else
00064 {
00065 v_debug ("repor imagem antes do free total");
00066 vImagesFreeImages (Images);
00067 v_debug ("repor imagem depois do free total");
00068 CameraSettings = vapiCameraSettingsRetrieveGlobal ();
00069 vapiGetSnapshot (Images, CameraSettings);
00070 vapiOriginal2Actual(Images);
00071 vImagesFreeImages(GlobalImages);
00072 GlobalImages->Original=vapiImagesCopy(Images->Original);
00073 vapiOriginal2Actual(GlobalImages);
00074 vapiOriginal2Actual (Images);
00075 }
00076 }
00077
00078 void
00079 vapiImageSave (vImages * Images, vOptions * options,
00080 vMacroResult * PreviousResult)
00081 {
00082 switch (options->choices[0])
00083 {
00084 case 1:
00085 {
00086
00087 cvSaveImage (options->chars[0].ch, Images->Original);
00088 break;
00089 }
00090
00091 default:
00092 case 0:
00093 {
00094
00095 cvSaveImage (options->chars[0].ch, Images->Actual);
00096 break;
00097 }
00098 }
00099 }