using System;
using System.Collections.Generic;
using System.Text;

namespace Impresion {
  #region Enumeraciones
  public enum Orientacion {
    Horizontal = 1,
    Vertical = 2,
    Continuo = 3
  }
  public enum Alineacion {
    Izquierda = 1,
    Centro = 2,
    Derecha = 3
  }
  public enum TipoFormato {
    Documentos = 1,
    Comanda,
    Vales
  }
  #endregion

  #region Clases
  class Formatos {
  }

  public class Columna {
    #region Campos Internos
    private string encabezado;
    private string tipoletra;
    private float tamanno;
    private string atributos;
    private float ancho;
    private int lineas;
    private Alineacion alineacion;
    private string texto;
    private float tamannoe;
    private Alineacion alineacione;
    private string atributose;
    private float anchoe;
    private string tipoletrae;
    #endregion

    #region Propiedades
    public string Encabezado {
      get { return encabezado; }
      set { encabezado = value; }
    }
    public string TipoLetra {
      get { return tipoletra; }
      set { tipoletra = value; }
    }
    public float Tamanno {
      get { return tamanno; }
      set { tamanno = value; }
    }
    public string Atributos {
      get { return atributos; }
      set { atributos = value; }
    }
    public float Ancho {
      get { return ancho * 10; }
      set { ancho = value; }
    }
    public int Lineas {
      get { return lineas; }
      set { lineas = value; }
    }
    public Alineacion Alineacion {
      get { return alineacion; }
      set { alineacion = value; }
    }
    public string Texto {
      get { return texto; }
      set { texto = value; }
    }
    public string TipoletraE {
      get { return tipoletrae; }
      set { tipoletrae = value; }
    }
    public float TamannoE {
      get { return tamannoe; }
      set { tamannoe = value; }
    }
    public Alineacion AlineacionE {
      get { return alineacione; }
      set { alineacione = value; }
    }
    public string AtributosE {
      get { return atributose; }
      set { atributose = value; }
    }
    public float AnchoE {
      get { return anchoe * 10; }
      set { anchoe = value; }
    }
    #endregion

    #region Constructor
    public Columna () {
      encabezado = "COLUMNA";
      tipoletra = "Arial";
      tamanno = 12F;
      ancho = 6.5F;
      lineas = 1;
      alineacion = Alineacion.Izquierda;
      atributos = "";
      tipoletrae = "Arial";
      tamannoe = 12F;
      anchoe = 6.5F;
      alineacione = Alineacion.Izquierda;
      atributose = "";
    }
    #endregion
  }

  public class DetalleImpresion {
    #region Campos Internos
    private Orientacion orientacion;
    private long variable;
    private System.Collections.Hashtable columnas;
    private int secuencia;
    private System.Collections.Hashtable detalles;
    private bool detalle;

    private string valor;
    private string tipoletra;
    private float tamanno;
    private string atributos;
    #endregion

    #region Propiedades
    public Orientacion Orientacion {
      get { return orientacion; }
      set { orientacion = value; }
    }
    public long Variable {
      get { return variable; }
      set { variable = value; }
    }
    public System.Collections.Hashtable Columnas {
      get {
        if (columnas == null) columnas = new System.Collections.Hashtable();
        return columnas;
      }
      set { columnas = value; }
    }
    public System.Collections.Hashtable Detalles {
      get {
        if (detalles == null) detalles = new System.Collections.Hashtable();
        return detalles;
      }
      set { detalles = value; }
    }
    public int Secuencia {
      get { return secuencia; }
      set { secuencia = value; }
    }
    public bool Detalle {
      get { return detalle; }
      set { detalle = value; }
    }
    public string Valor {
      get { return valor; }
      set { valor = value; }
    }
    public string TipoLetra {
      get { return tipoletra; }
      set { tipoletra = value; }
    }
    public float Tamanno {
      get { return tamanno; }
      set { tamanno = value; }
    }
    public string Atributos {
      get { return atributos; }
      set { atributos = value; }
    }
    #endregion

    #region Constructor
    public DetalleImpresion () { }
    public DetalleImpresion (int p_secuencia, Orientacion p_orientacion, long p_variable, string p_valor, string p_tipoletra, float p_tamanno, string p_atributos) {
      secuencia = p_secuencia;
      orientacion = p_orientacion;
      variable = p_variable;

      valor = p_valor;
      tipoletra = p_tipoletra;
      tamanno = p_tamanno;
      atributos = p_atributos;
    }
    #endregion
  }

  public class Papel {
    #region Campos Internos
    private string nombre;
    private float ancho;
    private float alto;
    private float margenizquierdo;
    private float margenderecho;
    private float margensuperior;
    private float margeninferior;
    #endregion

    #region Propiedades
    public string Nombre {
      get { return nombre; }
      set { nombre = value; }
    }
    public float Ancho {
      get { return ancho * 10; }
      set { ancho = value; }
    }
    public float Alto {
      get { return alto * 10; }
      set { alto = value; }
    }
    public float MargenIzquierdo {
      get { return margenizquierdo * 10; }
      set { margenizquierdo = value; }
    }
    public float MargenDerecho {
      get { return margenderecho * 10; }
      set { margenderecho = value; }
    }
    public float MargenSuperior {
      get { return margensuperior * 10; }
      set { margensuperior = value; }
    }
    public float MargenInferior {
      get { return margeninferior * 10; }
      set { margeninferior = value; }
    }
    #endregion
  }

  public class Formato {
    #region Campos Internos
    private long llave1;
    private long llave2;
    private string llave3;
    private long codigoformato;
    private TipoFormato tipoformato;
    private int copias;
    private Papel papel;
    private string impresora;
    private long codigoimpresora;
    private System.Collections.Hashtable detalles;  // Detalles
    private System.Collections.ArrayList lista;     // Orden
    #endregion

    #region Propidades
    public long Llave1 {
      get { return llave1; }
      set { llave1 = value; }
    }
    public long Llave2 {
      get { return llave2; }
      set { llave2 = value; }
    }
    public string Llave3 {
      get { return llave3; }
      set { llave3 = value; }
    }
    public long CodigoFormato {
      get { return codigoformato; }
      set { codigoformato = value; }
    }
    public TipoFormato TipoFormato {
      get { return tipoformato; }
      set { tipoformato = value; }
    }
    public int Copias {
      get { return copias; }
      set { copias = value; }
    }
    public Papel Papel {
      get {
        if (papel == null) papel = new Papel();
        return papel;
      }
      set { papel = value; }
    }
    public string Impresora {
      get { return impresora; }
      set { impresora = value; }
    }
    public long CodigoImpresora {
      get { return codigoimpresora; }
      set { codigoimpresora = value; }
    }
    public System.Collections.Hashtable Detalles {
      get {
        if (detalles == null) detalles = new System.Collections.Hashtable();
        return detalles;
      }
      set { detalles = value; }
    }
    public System.Collections.ArrayList Lista {
      get {
        if (lista == null) lista = new System.Collections.ArrayList();
        return lista;
      }
      set { lista = value; }
    }
    #endregion

    #region Constructor
    public Formato () {
      codigoimpresora = 0;
      impresora = "Cuentas";
    }
    #endregion

    #region Metodos Publicos
    #endregion
  }
  #endregion
}
