Exemple #1
0
        internal Posicion ObtenerPosicionPixels(int numpagina, Punto punto)
        {
            Pagina   p   = _Paginas.Obtener(numpagina);
            Posicion pos = new Posicion(this);

            pos.IndicePagina = numpagina;
            pos.Pagina       = p;
            return(p.ObtenerPosicionPixels(_Lineas, punto, pos));
        }
Exemple #2
0
        private void Completar2(Posicion posicion, int indicePagina, int indiceLinea, int numCaracter)
        {
            Pagina p = _Paginas.Obtener(indicePagina);

            posicion.VDocumento   = this;
            posicion.IndicePagina = indicePagina;
            posicion.Pagina       = p;
            posicion.Pagina.Completar(_Lineas, posicion, indiceLinea, numCaracter);
        }
Exemple #3
0
        internal Medicion ObtenerAnchoLinea(int numlinea)
        {
            Pagina act = _Paginas[_Paginas.Count - 1];

            if (numlinea < act.LineaInicio)
            {
                for (int i = _Paginas.Count - 2; i >= 0; i--)
                {
                    if (_Paginas[i].ContieneLinea(numlinea))
                    {
                        return(_Paginas[i].ObtenerAnchoLinea(numlinea));
                    }
                }
            }
            return(act.ObtenerAnchoLinea(numlinea));
        }
Exemple #4
0
        public Medicion ObtenerAncho(int numlinea)
        {
            int suma = 0;

            for (int i = 0; i < _Paginas.Count; i++)
            {
                Pagina act = _Paginas[i];
                suma += act.Cantidad;
                if (suma > numlinea)
                {
                    return(act.ObtenerAnchoLinea(numlinea));
                }
            }
            Pagina ultimapag = _Paginas[_Paginas.Count - 1];

            return(ultimapag.ObtenerAnchoLinea(numlinea));
        }
Exemple #5
0
        public IEnumerable <Pagina> ObtenerDesde(int numpaginaInicio, int cantidad)
        {
            int           inicio = numpaginaInicio;
            List <Pagina> pag    = new List <Pagina>();

            lock (_documento)
            {
                for (int i = inicio; i < cantidad; i++)
                {
                    Pagina p = ObtenerSiguiente(i);
                    if (p == null)
                    {
                        break;
                    }
                    yield return(p);
                }
            }
        }
Exemple #6
0
        Posicion BuscarParrafo(Parrafo parrafoBuscado, int paginainicio, int paginafin)
        {
            if (paginainicio > paginafin)
            {
                int centro2 = Math.Max(paginainicio, paginafin);
reintentar:
                if (centro2 >= _Paginas.Count)
                {
                    centro2 = _Paginas.Count - 1;
                }
                Pagina   elemento2 = _Paginas[centro2];
                int      linea     = BuscarLineaInicioParrafo(elemento2.LineaInicio, parrafoBuscado);
                Posicion p         = new Posicion(_docimpreso);
                _docimpreso.Completar(p, centro2, linea, 0);
                return(p);
            }
            int    centro   = (paginainicio + paginafin) / 2;
            Pagina elemento = _Paginas[centro];
            Linea  inicial  = _Lineas.Obtener(elemento.LineaInicio);

            if (inicial.Parrafo == parrafoBuscado)
            {
                int      linea = BuscarLineaInicioParrafo(elemento.LineaInicio, parrafoBuscado);
                Posicion p     = new Posicion(_docimpreso);
                _docimpreso.Completar(p, centro, linea, 0);
                return(p);
                //return CrearPosicion(centro, elemento.LineaInicio, 0);
            }
            else
            {
                if (inicial.Parrafo.EsSiguiente(parrafoBuscado))
                {
                    return(BuscarParrafo(parrafoBuscado, centro + 1, paginafin));
                }
                else
                {
                    return(BuscarParrafo(parrafoBuscado, paginainicio, centro - 1));
                }
            }
        }
Exemple #7
0
 public bool EsUltimaPagina(int indicePagina)
 {
     if (indicePagina < _Paginas.Count - 1)
     {
         return(false);
     }
     else
     {
         if (_listaCompleta && indicePagina == _Paginas.Count - 1)
         {
             return(true);
         }
         AsegurarExistencia(indicePagina);
         Pagina res = Obtener(indicePagina);
         if (res == null)
         {
             return(false);
         }
         else
         {
             return(res.EsUltimaPagina);
         }
     }
 }