# VImageEdit

**Hereda de:** [VAbstractBrowser](https://doc.velneo.com/24/velneo-vdevelop/scripts/lenguajes/javascript/clases/vabstractbrowser).

Esta clase representa al control editor de imágenes.

## [Propiedades](#documentación-de-propiedades)

| Tipo    | Función               |
| ------- | --------------------- |
| Boolean | [modified](#modified) |
| Boolean | [readOnly](#readonly) |

## Funciones

**Generales**

| [VImage](https://doc.velneo.com/24/velneo-vdevelop/scripts/lenguajes/javascript/clases/vimage) | [image](#image)()                          |
| ---------------------------------------------------------------------------------------------- | ------------------------------------------ |
| void                                                                                           | [setImage](#setimage)( VImage image )      |
| void                                                                                           | [setViewMode](#setviewmode)( Number mode ) |
| Number                                                                                         | [viewMode](#viewmode)()                    |

**De portapapeles**

| Retorno | Función                 |
| ------- | ----------------------- |
| Boolean | [canPaste](#canpaste)() |
| void    | [copy](#copy)()         |
| void    | [cut](#cut)()           |
| void    | [paste](#paste)()       |

**De comandos**

| Retorno | Función                     |
| ------- | --------------------------- |
| void    | [editDialog](#editdialog)() |

**De cámara de fotos**

| Retorno | Función                                              |
| ------- | ---------------------------------------------------- |
| Boolean | [isCameraActive](#iscameraactive)()                  |
| void    | [startCamera](#startcamera)( VBytearray deviceName ) |
| void    | [startDefaultCamera](#startdefaultcamera)()          |
| void    | [stopCamera](#stopcamera)()                          |
| void    | [takePicture](#takepicture)()                        |

## Señales

| Señal         |
| ------------- |
| Value changed |

## Enumeraciones

**View modes**

* ViewModeOriginalCenter
* ViewModeStrechShrink
* ViewModeProportionalNotStrech
* ViewModeProportional
* ViewModeTile
* ViewModeOriginalLeftTop

## Documentación de propiedades

#### modified

Devuelve true si el contenido del control ha sido modificado.

#### readOnly

Permite leer o configurar si el control es de sólo lectura.

## Documentación de funciones

### Funciones generales

#### VImage image() <a href="#image" id="image"></a>

Crea un objeto de la clase [VImage](https://doc.velneo.com/24/velneo-vdevelop/scripts/lenguajes/javascript/clases/vimage) con la imagen contenida en el control.

#### void setImage( VImage image ) <a href="#setimage" id="setimage"></a>

Mueve la imagen del objeto de la clase VImagen al control.

Parámetros:

* image: objeto de la clase [VImage](https://doc.velneo.com/24/velneo-vdevelop/scripts/lenguajes/javascript/clases/vimage) que contiene la imagen a mover al control.

Si el control de edición del campo objeto dibujo (formulario) es de sólo lectura o no cumple la condición de la propiedad de activo, la imagen no se carga en el control. Debemos acceder al registro con la clase [VRegister](https://doc.velneo.com/24/velneo-vdevelop/scripts/lenguajes/javascript/clases/vregister) y usar la función setFieldImage() para introducirlo en el campo y actualizar la vista.

#### void setViewMode( Number mode ) <a href="#setviewmode" id="setviewmode"></a>

Asigna el valor de la propiedad aspecto de dibujo que aplicará el control. Ver enum de View modes.

Parámetros:

* mode: ver enum de View modes.

#### Number viewMode() <a href="#viewmode" id="viewmode"></a>

Devuelve el aspecto del dibujo aplicado en el control. Ver enum View modes.

### Funciones de portapapeles

#### Boolean canPaste() <a href="#canpaste" id="canpaste"></a>

Devuelve true si el control está activo y permite pegar una imagen a través del portapapeles.

#### void copy() <a href="#copy" id="copy"></a>

Copia la imagen del control al portapapeles.

#### void cut() <a href="#cut" id="cut"></a>

Corta la imagen del control y la mueve al portapapeles.

#### void paste() <a href="#paste" id="paste"></a>

Pega una imagen del portapapeles al control.

### Funciones de comandos

#### void editDialog() <a href="#editdialog" id="editdialog"></a>

Abre el cuadro de diálogo con el editor de imágenes de Velneo.

### Funciones de cámara de fotos

#### Boolean isCameraActive() <a href="#iscameraactive" id="iscameraactive"></a>

Devuelve true si el modo cámara está activo y false si está en modo normal.

#### void startCamera( VByteArray deviceName ) <a href="#startcamera" id="startcamera"></a>

Arranca el modo cámara en el control con la cámara especificada en el parámetro.

En la clase [VApp](https://doc.velneo.com/24/velneo-vdevelop/scripts/lenguajes/javascript/clases/vapp) disponemos de la función availableCameras() para obtener un array de los dispositivos de cámara de fotos existentes en el sistema o defaultCamera() para obtener el nombre del dispositivo de cámara por defecto.

Parámetros:

* [VByteArray](https://doc.velneo.com/24/velneo-vdevelop/scripts/lenguajes/javascript/clases/vbytearray) deviceName: array de bites con el nombre del dispositivo.

#### void startDefaultCamera() <a href="#startdefaultcamera" id="startdefaultcamera"></a>

Arranca el modo cámara en el control con la cámara por defecto.

#### void stopCamera() <a href="#stopcamera" id="stopcamera"></a>

Cierra el modo cámara sin hacer foto.

#### void takePicture() <a href="#takepicture" id="takepicture"></a>

Hace una foto, cierra el modo cámara y deja la foto tomada en el campo y en el control imagen. Si aceptamos el formulario la foto queda guardada.

## Ejemplos

### 1. Cargar en un combobox de un formulario la lista de cámaras del dispositivo y activar la que el usuario seleccione

#### Proceso para alimentar el combo box de cámaras disponibles

```javascript
var aCamaras = Array;
var aCamarasDescripcion = Array;
var oCombo = theRoot.dataView().control("CBX_CAMARAS");

aCamaras = theApp.availableCameras();
aCamarasDescripcion = theApp.availableCameraDescriptions();

//Cargamos a continuacion todas las camaras detectadas por el sistema
for ( var i = 0; i < aCamarasDescripcion.length; i++ )
{
    oCombo.addItem( aCamarasDescripcion[ i ] );
}
```

#### Proceso para activar la cámara seleccionada en el combo

```javascript
// Obtenemos los nombres de las cámaras, que es lo que se usa para seleccionar la cámara
var aCamaras = theApp.availableCameras();

//Combobox
var oCombo = theRoot.dataView().control("CBX_CAMARAS");

// Objeto imagen del formulario
var objetoImagen = theRoot.dataView().control("IMAGEN");

// Posición del combo seleccionada que ha de corresponderse con el array de nombres de la cámara para que funcione
var i = oCombo.currentIndex;

// Nos quedamos con el nombre correspondiente a la cámara seleccionada por el array
var ba = new VByteArray();
ba.setText(aCamaras[i]);

// Iniciar cámara
objetoImagen.startCamera( ba );
```
