/// <summary> /// Constructor /// </summary> /// <param name="control">component the editor component</param> /// <param name="formula">formula the formula for edit</param> public FormulaEditorPerformer(IControl control, MathFormulaDrawable formula) { this.virtualControl = control; this.formula = formula; newCursor = formula; /* keyPressEventHandler = new KeyPressEventHandler(keyPress); * keyUpEventHandler = new KeyEventHandler(keyUp); * keySymbol = this;*/ }
/// <summary> /// Mouse move event handler in move symbol mode /// </summary> protected void move() { DrawCursor(); if (formulaRectangle.Contains(imagePoint)) { newCursor = formula.GetInsertedObject(imagePoint); } DrawCursor(oldCursor, false, true); if (oldCursor != newCursor) { oldCursor = newCursor; } DrawCursor(newCursor, true, true); }
/// <summary> /// Sets formula /// </summary> /// <param name="str"></param> /// <param name="sizes"></param> public void SetFormula(string str, int[] sizes) { string s = ""; if (str != null) { s = str; } MathFormula f = MathFormula.FromString(sizes, s); MathFormulaDrawable form = new MathFormulaDrawable(f, DrawableConverter.Object); form.Sizes = sizes; formula = form; newCursor = form; DrawFormula(); }
/// <summary> /// Gets object to insert /// </summary> /// <param name="p">position of the object</param> /// <returns>The object</returns> public IInsertedObject GetInsertedObject(Point p) { for (int i = 0; i < Count; i++) { MathSymbol find = this[i]; IInsertedObject obj = MathSymbolDrawable.GetInsertedObject(find, p); if (obj != null) { return(obj); } } if (endRectangle.Contains(p)) { return(this); } return(null); }
/// <summary> /// Sets a new editing formula /// </summary> /// <param name="formula">The formula</param> /// <param name="rectangle">The new rectangle of new formula</param> public void SetFormula(MathFormulaDrawable formula, Rectangle rectangle) { this.formula = formula; newCursor = this.formula; Rectangle r = formulaRectangle; r.X = rectangle.X; r.Y = rectangle.Y; r.Width = rectangle.Width; r.Height = rectangle.Height; Point p = pointFormula; p.X = r.X + 20; p.Y = r.Y + r.Height / 2; this.formula.Position = p; this.formula.CalculateFullRelativeRectangle(); this.formula.CalculatePositions(); }
/// <summary> /// Draws cursor in insert/delete mode /// </summary> /// <param name="obj">The selected object</param> /// <param name="b">The new/old flag</param> /// <param name="insert">The insert/delete flag</param> protected void DrawCursor(IInsertedObject obj, bool b, bool insert) { if (obj == null) { return; } Rectangle r; if (insert) { r = obj.InsertedRect; } else { r = ((IDrawableSymbol)obj).PureDrawable.FullRectangle; } Image im; if (b) { im = cursorImage; } else { im = iBkgnd; } Graphics g = virtualControl.Graphics; Point p = transPoint; dRect.X = r.X + p.X; dRect.Y = r.Y + p.Y; dRect.Width = r.Width; dRect.Height = r.Height; sRect.X = r.X; sRect.Y = r.Y; sRect.Width = r.Width; sRect.Height = r.Height; g.DrawImage(im, dRect, sRect, GraphicsUnit.Pixel); g.Dispose(); }