internal Parrafo(Documento documento, int id, Parrafo anterior, Parrafo siguiente) { _contenedor = documento; ID = id; Posicion = 1; _Anterior = anterior; _Siguiente = siguiente; bufferTexto.Iniciar(); }
internal Texto ObtenerRangoTexto(int inicio, int cantidad) { Texto t = new Texto(); t.Iniciar(); if (!_bloques.SinAsignar()) { IEnumerable <Bloque> bloques = ObtenerRangoBloques(inicio, cantidad); t.AsegurarBloques(); foreach (Bloque b in bloques) { t._bloques.Agregar(b.Cantidad, b.Formato); } t.st.Append(st); } t.Iniciar(); t.Append(st.ToString(inicio, cantidad)); #if DEBUG t.Verificar(); #endif return(t); }
internal Texto Dividir(int posicionDivision) { Texto texto2 = new Texto(); texto2.Iniciar(); if (!_bloques.SinAsignar()) { int primerbloque, ultimobloque; int deltaini, deltafin; ObtenerRango(posicionDivision, st.Length - posicionDivision, out primerbloque, out deltaini, out ultimobloque, out deltafin); Bloque bloqueinicio = _bloques.Obtener(primerbloque); int saldoprimerbloque = bloqueinicio.Cantidad - deltaini; bloqueinicio.CambiarCantidad(deltaini); _bloques.Guardar(primerbloque, bloqueinicio); texto2.AsegurarBloques(); int deltaelim = 0; if (saldoprimerbloque != 0) { Bloque clon = _bloques.Obtener(primerbloque);//.Clonar(); texto2._bloques.Agregar(saldoprimerbloque, clon.Formato); deltaelim++; } for (int i = primerbloque + 1; i < _bloques.Cantidad; i++) { Bloque b = _bloques.Obtener(i); texto2._bloques.Agregar(b.Cantidad, b.Formato); } if (primerbloque + 1 != _bloques.Cantidad) { _bloques.EliminarRango(primerbloque + 1, _bloques.Cantidad - (primerbloque + 1)); } } texto2.st.Append(st.ToString(posicionDivision, st.Length - posicionDivision)); st.Remove(posicionDivision, st.Length - posicionDivision); #if DEBUG Verificar(); texto2.Verificar(); #endif return(texto2); }