Beispiel #1
0
 internal void NotificarEliminacion()
 {
     ID         = int.MaxValue;
     _Anterior  = null;
     _Siguiente = null;
     _Formato   = null;
 }
Beispiel #2
0
        internal Parrafo Clonar(Documento documento)
        {
            Parrafo p = new Parrafo(documento, int.MaxValue, null, null);

            p.bufferTexto = bufferTexto.ObtenerRangoTexto(0, bufferTexto.Length);
            return(p);
        }
Beispiel #3
0
 internal void ConectarAntes(Parrafo parrafo)
 {
     if (parrafo != null)
     {
         parrafo._Siguiente = this;
     }
     _Anterior = parrafo;
 }
Beispiel #4
0
 internal void ConectarDespues(Parrafo parrafo)
 {
     if (parrafo != null)
     {
         parrafo._Anterior = this;
     }
     _Siguiente = parrafo;
 }
Beispiel #5
0
        public Parrafo ObtenerSubParrafo(Documento contenedor, int inicio, int cantidad)
        {
            Parrafo p = new Parrafo(contenedor, 0, null, null);

            p.bufferTexto = bufferTexto.ObtenerRangoTexto(inicio, cantidad);
            p._Formato    = _Formato;
            return(p);
        }
Beispiel #6
0
 internal Parrafo(Documento documento, int id, Parrafo anterior, Parrafo siguiente)
 {
     _contenedor = documento;
     ID          = id;
     Posicion    = 1;
     _Anterior   = anterior;
     _Siguiente  = siguiente;
     bufferTexto.Iniciar();
 }
Beispiel #7
0
        internal Parrafo DividirParrafo(int idnuevo, int posicionDivision)
        {
            Parrafo nuevo = new Parrafo(_contenedor, idnuevo, this, _Siguiente);

            nuevo._Formato = _Formato;
            InsertarSiguiente(nuevo);
            nuevo.bufferTexto = bufferTexto.Dividir(posicionDivision);
            return(nuevo);
        }
Beispiel #8
0
 internal void AgregarTextoDe(Parrafo parrafo_Siguiente)
 {
     bufferTexto.Agregar(parrafo_Siguiente.bufferTexto);
     if (_Formato != null || parrafo_Siguiente._Formato != null)
     {
         _Formato = Formato.Fusionar(parrafo_Siguiente.Formato);
     }
     _contenedor.NotificarCambio(this);
 }
Beispiel #9
0
 internal Parrafo(Documento _documento, int id, Parrafo anterior, Parrafo siguiente, Parrafo formatoBase)
 {
     _contenedor = _documento;
     ID          = id;
     _Formato    = formatoBase._Formato == null?null:formatoBase.Formato.Clonar();
     Posicion    = 1;
     _Anterior   = anterior;
     _Siguiente  = siguiente;
     bufferTexto.Iniciar();
 }
Beispiel #10
0
        internal void InsertarSiguiente(Parrafo nuevo)
        {
            if (_Siguiente != null)
            {
                _Siguiente._Anterior = nuevo;
            }
            nuevo._Anterior = this;
            Parrafo anteriorsig = _Siguiente;

            nuevo._Siguiente = _Siguiente;
            _Siguiente       = nuevo;
            if (anteriorsig != null)
            {
                if (anteriorsig.Posicion > Posicion + 1)
                {
                    _contenedor.AsegurarOrden();
                    nuevo.Posicion = Posicion + 1;
                }
                else
                {
                    _contenedor.NotificarCambioOrden();
                }
            }
            else //Si es el último párrafo
            {
                _contenedor.AsegurarOrden();
                nuevo.Posicion = Posicion + 100;
            }

            /*
             * Parrafo sig = _Siguiente;
             * int contador = Posicion+5;
             * while (sig != null)
             * {
             *  sig.Posicion = contador;
             *  sig = sig._Siguiente;
             *  int incremento=Math.Max(1, sig != null&&sig.Posicion>contador ? (sig.Posicion - contador) / 2 : 10);
             *  contador += incremento;
             *  if (sig != null && sig.Posicion > contador)
             *  {
             *      break;
             *  }
             * }*/
        }
Beispiel #11
0
        //internal void InsertarAnterior(Parrafo nuevo)
        //{
        //    if (_Anterior != null)
        //    {
        //        _Anterior._Siguiente = nuevo;
        //    }
        //    nuevo._Anterior = _Anterior;
        //    nuevo._Siguiente = this;
        //    _Anterior = nuevo;
        //    _contenedor.NotificarCambioOrden();

        //    /*Parrafo ant=_Anterior;
        //    int contador = Posicion-5;
        //    while (ant != null)
        //    {
        //        ant.Posicion = contador;
        //        ant = ant._Anterior;
        //        int incremento=Math.Max(1,ant!=null&&ant.Posicion<contador?(ant.Posicion-contador)/2:10);
        //        contador-=incremento;
        //        if (ant != null && ant.Posicion < contador)
        //        {
        //            break;
        //        }
        //    }*/
        //}
        public bool EsSiguiente(Parrafo parrafo2)
        {
            _contenedor.AsegurarOrden();
            return(Posicion < parrafo2.Posicion);
        }