Beispiel #1
0
 public Medicion MedirEspacioLineas(IGraficador _GraficadorConsultas)
 {
     if (!espacioLineas.HasValue)
     {
         espacioLineas = _GraficadorConsultas.MedirEspacioLineas(this);
     }
     return(espacioLineas.Value);
 }
Beispiel #2
0
 public Medicion MedirBaseTexto(IGraficador _GraficadorConsultas)
 {
     if (!baseTexto.HasValue)
     {
         baseTexto = _GraficadorConsultas.MedirBaseTexto(this);
     }
     return(baseTexto.Value);
 }
Beispiel #3
0
 public SWPGenericControl(IGraficador graficadorConsultas)
     : base()
 {
     _documento = new Documento();
     escritorio = new Escritorio(_documento, graficadorConsultas);
     escritorio.ActualizarPresentacion += new EventHandler(contpresentacion_ActualizarPresentacion);
     escritorio.Dimensiones             = new TamBloque(new Medicion(50, Unidad.Milimetros), new Medicion(50, Unidad.Milimetros));
 }
Beispiel #4
0
 public Medicion MedirAltoTexto(IGraficador _GraficadorConsultas)
 {
     if (!altoTexto.HasValue)
     {
         altoTexto = _GraficadorConsultas.MedirAltoTexto(this);
     }
     return(altoTexto.Value);
 }
Beispiel #5
0
        public Punto Dibujar(IGraficador g, Punto posicionInicial, Seleccion seleccion, AvanceBloques avance, Medicion anchoLinea, bool incluirEspacioAnterior, bool incluirEspacioPosterior)
        {
            List <Bloque>     lista            = new List <Bloque>(avance.ObtenerBloquesDe(this));
            bool              esultimalinea    = EsUltimaLineaParrafo;
            Medicion          espacioanterior  = EsPrimeraLineaParrafo?(incluirEspacioAnterior ? (Parrafo.Formato.ObtenerEspacioAnterior()) : Medicion.Cero):Medicion.Cero;
            Medicion          espacioposterior = EsUltimaLineaParrafo?(incluirEspacioPosterior?(Parrafo.Formato.ObtenerEspacioPosterior()):Medicion.Cero):Medicion.Cero;
            Medicion          altolinea        = AltoLinea - espacioposterior;
            Medicion          deltacalc        = ObtenerDeltaAlineacion(anchoLinea);
            AlineacionParrafo alineacion       = Parrafo.Formato.ObtenerAlineacionHorizontal();
            Punto             posicion         = new Punto(posicionInicial.X, posicionInicial.Y);

            for (int i = 0; i < 2; i++)
            {
                Medicion deltax;
                if (alineacion == AlineacionParrafo.Centro || alineacion == AlineacionParrafo.Derecha)
                {
                    deltax = posicion.X + deltacalc;
                }
                else
                {
                    deltax = posicion.X;
                }
                Punto pt      = posicion;
                int   posbase = Inicio;

                Medicion altobase = AltoBase;
                Bloque   ultb     = new Bloque(0, Parrafo.Formato.ObtenerFormatoTexto());
                foreach (Bloque b in lista)
                {
                    ultb = b;
                    if (b.Cantidad == 0)
                    {
                        continue;
                    }
                    Estilo    e         = new Estilo(b);
                    Medicion  baset     = e.MedirAlto();
                    string    total     = Parrafo.ObtenerSubCadena(posbase, b.Cantidad);
                    TamBloque tb        = e.Medir(total);
                    Punto     posdibujo = new Punto(deltax, posicion.Y + (altolinea - baset) - altobase);
                    Dibujar(g, posdibujo, seleccion, e, posbase, b.Cantidad, total, i);
                    posbase += b.Cantidad;
                    deltax  += tb.Ancho;
                }
                if (seleccion != null && EsUltimaLineaParrafo && seleccion.Contiene(Parrafo, Inicio + Cantidad))
                {
                    Estilo   e     = new Estilo(ultb);
                    Medicion baset = e.MedirAlto();
                    Estilo   sel   = e.Clonar();
                    sel.ColorFondo = new BrochaSolida(new ColorDocumento(0, 0, 0));
                    sel.ColorLetra = new BrochaSolida(new ColorDocumento(255, 255, 255));
                    Punto posdibujo = new Punto(deltax, posicion.Y + (altolinea - baset) - altobase);
                    DibujarConTam(sel, g, posdibujo, " ", "", i);
                }
            }
            return(new Punto(posicion.X, posicion.Y + AltoLinea));
        }
Beispiel #6
0
        public Punto DibujarFondo(IGraficador graficos, Punto posicionbase, string texto, string anteriortexto)
        {
            if (!string.IsNullOrEmpty(anteriortexto))
            {
                posicionbase.X += GraficadorConsultas.MedirUnion(Letra, anteriortexto, texto);
            }
            TamBloque b = Medir(texto);

            graficos.RellenarRectangulo(ColorFondo, posicionbase, b);
            return(new Punto(posicionbase.X + b.Ancho, posicionbase.Y));
        }
Beispiel #7
0
 private Punto DibujarConTam(Estilo e, IGraficador graficos, Punto posicionbase, string texto, string anteriortexto, int numpasada)
 {
     if (numpasada == 0)
     {
         return(e.DibujarFondo(graficos, posicionbase, texto, ""));
     }
     else
     {
         return(e.DibujarConTam(graficos, posicionbase, texto, anteriortexto));
     }
 }
Beispiel #8
0
 private void Dibujar(Estilo e, IGraficador graficos, Punto posicionbase, string texto, int numpasada)
 {
     if (numpasada == 0)
     {
         e.DibujarFondo(graficos, posicionbase, texto, "");
     }
     else
     {
         e.Dibujar(graficos, posicionbase, texto);
     }
 }
Beispiel #9
0
        public void DibujarCursor(IGraficador graficador, Posicion posicion)
        {
            Lapiz lp = new Lapiz()
            {
                Ancho = new Medicion(0.5, Unidad.Milimetros), Brocha = new BrochaSolida(new ColorDocumento(127, 0, 0))
            };
            Posicion pos    = posicion;
            Punto    punto2 = new Punto(pos.PosicionPagina.X, pos.PosicionPixelY + pos.AltoLinea);

            graficador.DibujarLinea(lp, pos.PosicionPagina + PosicionInicioDibujo, punto2 + PosicionInicioDibujo);
        }
Beispiel #10
0
 public void DibujarPaginas(IGraficador generador, out Punto InicioCursor, out Punto FinCursor)
 {
     lock (this)
     {
         _documento.DibujarPagina(generador, Punto.Origen, 0, conttexto.ObtenerSeleccion());
         Posicion pos = _documento.ObtenerPosicionCursor(0,
                                                         conttexto.ObtenerParrafoSeleccionado(),
                                                         conttexto.ObtenerPosicionInsercion());
         _documento.CompletarPixels(pos);
         InicioCursor = new Punto(pos.PosicionPixelX, pos.PosicionPixelY);
         FinCursor    = new Punto(pos.PosicionPixelX, pos.PosicionPixelY + pos.AltoLinea);
     }
     //e.Graphics.DrawLine(Pens.Black, new PointF(pos.PosicionPixelX, pos.PosicionPixelY), new PointF(pos.PosicionPixelX, pos.PosicionPixelY + pos.AltoLinea));
 }
Beispiel #11
0
        public Escritorio(Documento _documento, IGraficador graficadorConsultas)
        {
            if (graficadorConsultas == null)
            {
                throw new Exception("Debe indicarse un objeto graficador para efectuar consultas");
            }
            ColorFondo           = new SWPEditor.Dominio.TextoFormato.ColorDocumento(50, 25, 25);
            _graficadorConsultas = graficadorConsultas;
            AsegurarGraficador();
            ContPresentarDocumento controlador = new ContPresentarDocumento(_documento);

            EspacioEntrePaginas = new Medicion(10, Unidad.Milimetros);
            ControlDocumento    = controlador;
            EsquinaSuperior     = new Punto(Medicion.Cero, Medicion.Cero);
        }
Beispiel #12
0
        public void Dibujar(IGraficador g, Punto esquinaSuperior, ListaLineas _Lineas, Seleccion seleccion, AvanceBloques avance)
        {
            CompletarLineas();
            Punto pt = esquinaSuperior;

            pt.X += Margen.Izquierdo;
            pt.Y += Margen.Superior;
            Medicion anchoPagina = ObtenerAnchoLineas();
            int      lim         = LineaInicio + Cantidad;

            for (int numlinea = LineaInicio; numlinea < lim; numlinea++)
            {
                Linea l = _Lineas.Obtener(numlinea);
                pt = l.Dibujar(g, pt, seleccion, avance, anchoPagina, true, true);
            }
        }
Beispiel #13
0
        public void Dibujar(IGraficador graf, DocumentoImpreso documento, Posicion posicion, Seleccion seleccion, bool dibujarCursor)
        {
            Pagina p = documento.ObtenerPagina(IDPagina);

            if (p == null)
            {
                return;
            }
            graf.RellenarRectangulo(BrochaSolida.Blanco, new Punto(Medicion.Cero, Medicion.Cero) + PosicionInicioDibujo, p.Dimensiones);
            graf.DibujarRectangulo(Lapiz.Negro, new Punto(Medicion.Cero, Medicion.Cero) + PosicionInicioDibujo, p.Dimensiones);
            documento.DibujarPagina(graf, new Punto(Medicion.Cero, Medicion.Cero) + PosicionInicioDibujo, IDPagina, seleccion);
            if (dibujarCursor)
            {
                if (IDPagina == posicion.IndicePagina && seleccion == null)
                {
                    DibujarCursor(graf, posicion);
                }
            }
        }
Beispiel #14
0
        public bool PrintNextPage(IGraficador graficador)
        {
            if (!numpagina.HasValue)
            {
                numpagina = 0;
            }
            bool resultado = true;

            if (_documento.EsUltimaPagina(numpagina.Value))
            {
                resultado = false;
            }
            _documento.DibujarPagina(graficador, new Punto(Medicion.Cero, Medicion.Cero), numpagina.Value, null);
            numpagina++;
            if (!resultado)
            {
                ImpresionCompleta = true;
            }
            return(resultado);
        }
Beispiel #15
0
        public void Dibujar(IGraficador graficador, Seleccion seleccion, bool dibujarCursor)
        {
            AsegurarGraficador();
            Posicion pos = ControlDocumento.ObtenerPosicion();

            AsegurarVisibilidad(pos);
            Medicion             inicio  = Medicion.Cero - EsquinaSuperior.Y;
            Medicion             derecha = Medicion.Cero - EsquinaSuperior.X;
            int                  i       = PaginaSuperior;
            IEnumerable <Pagina> pags    = _Documento.ObtenerDesde(PaginaSuperior);

            graficador.RellenarRectangulo(fondo, Punto.Origen, Dimensiones);
            foreach (Pagina p in pags)
            {
                LienzoPagina l = new LienzoPagina(i, new Punto(derecha, inicio));
                l.Dibujar(graficador, _Documento, pos, seleccion, dibujarCursor);
                if (inicio > Dimensiones.Alto + EsquinaSuperior.Y)
                {
                    return;
                }
                inicio += p.Dimensiones.Alto + EspacioEntrePaginas;
                i++;
            }
        }
Beispiel #16
0
 public void Dibujar(IGraficador graficos, Punto posicionbase, string texto)
 {
     //TamBloque b=Medir(texto);
     //graficos.RellenarRectangulo(ColorFondo, posicionbase, b);
     graficos.DibujarTexto(posicionbase, Letra, ColorLetra, texto);
 }
Beispiel #17
0
 private void Dibujar(IGraficador g, Punto posicion, Seleccion seleccion, Estilo estiloBase, int Inicio, int Cantidad, string subcadena, int contador)
 {
     try
     {
         string tot = subcadena;//Parrafo.ObtenerSubCadena(Inicio, Cantidad);
         if (seleccion != null)
         {
             Parrafo inicial = seleccion.ObtenerParrafoInicial();
             Parrafo final   = seleccion.ObtenerParrafoFinal();
             Estilo  e       = estiloBase;
             Estilo  sel     = estiloBase.Clonar();
             sel.ColorFondo = new BrochaSolida(new ColorDocumento(0, 0, 0));
             sel.ColorLetra = new BrochaSolida(new ColorDocumento(255, 255, 255));
             string c1 = null, c2 = null;
             //for (int contador = 0; contador <= 1; contador++)
             {
                 int   ini          = seleccion.ObtenerPosicionInicial();
                 int   fin          = seleccion.ObtenerPosicionFinal();
                 Punto possiguiente = posicion;
                 if (inicial == Parrafo)
                 {
                     if (final == Parrafo)
                     {
                         ini -= Inicio;
                         fin -= Inicio;
                         if (ini < 0)
                         {
                             ini = 0;
                         }
                         if (ini > Cantidad)
                         {
                             ini = Cantidad;
                         }
                         if (fin < 0)
                         {
                             fin = 0;
                         }
                         if (fin > Cantidad)
                         {
                             fin = Cantidad;
                         }
                         c1           = c1 ?? tot.Substring(0, ini);
                         c2           = c2 ?? tot.Substring(ini, fin - ini);
                         possiguiente = DibujarConTam(e, g, possiguiente, c1, null, contador);
                         possiguiente = DibujarConTam(sel, g, possiguiente, c2, c1, contador);
                         possiguiente = DibujarConTam(e, g, possiguiente, tot.Substring(fin, Cantidad - fin), c2, contador);
                     }
                     else
                     {
                         ini -= Inicio;
                         if (ini < 0)
                         {
                             ini = 0;
                         }
                         if (ini > Cantidad)
                         {
                             ini = Cantidad;
                         }
                         c1           = c1 ?? tot.Substring(0, ini);
                         possiguiente = DibujarConTam(e, g, possiguiente, c1, null, contador);
                         possiguiente = DibujarConTam(sel, g, possiguiente, tot.Substring(ini, Cantidad - ini), c1, contador);
                     }
                 }
                 else
                 {
                     if (final == Parrafo)
                     {
                         fin -= Inicio;
                         if (fin < 0)
                         {
                             fin = 0;
                         }
                         if (fin > Cantidad)
                         {
                             fin = Cantidad;
                         }
                         c1           = c1 ?? tot.Substring(0, fin);
                         possiguiente = DibujarConTam(sel, g, possiguiente, c1, null, contador);
                         possiguiente = DibujarConTam(e, g, possiguiente, tot.Substring(fin, Cantidad - fin), c1, contador);
                     }
                     else
                     {
                         if (inicial.EsSiguiente(Parrafo) && !final.EsSiguiente(Parrafo))
                         {
                             Dibujar(sel, g, possiguiente, tot, contador);
                         }
                         else
                         {
                             Dibujar(e, g, possiguiente, tot, contador);
                         }
                     }
                 }
             }
         }
         else
         {
             //for (int contador = 0; contador <= 1; contador++)
             {
                 Dibujar(estiloBase, g, posicion, tot, contador);
             }
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message + "\r\n" + ex.StackTrace, "Error");
         throw ex;
     }
 }
Beispiel #18
0
 public void DrawDesktop(IGraficador graficador, bool dibujarSeleccion, bool dibujarCursor)
 {
     escritorio.Dibujar(graficador, dibujarSeleccion?_ControlDocumento.ObtenerSeleccion():null, dibujarCursor);
 }
Beispiel #19
0
        public void DibujarPagina(IGraficador g, Punto esquinaSuperior, int numpagina, Seleccion seleccion)
        {
            AvanceBloques av = new AvanceBloques(_Lineas.Obtener(_Paginas.Obtener(numpagina).LineaInicio));

            _Paginas.Obtener(numpagina).Dibujar(g, esquinaSuperior, _Lineas, seleccion, av);
        }