/**************************************************************************
 OmegaT - Computer Assisted Translation (CAT) tool
          with fuzzy matching, translation memory, keyword search,
          glossaries, and translation leveraging into updated projects.

 Copyright (C) 2012 Martin Fleurke
               Home page: http://www.omegat.org/
               Support center: http://groups.yahoo.com/group/OmegaT/

 This file is part of OmegaT.

 OmegaT is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation, either version 3 of the License, or
 (at your option) any later version.

 OmegaT is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with this program.  If not, see <http://www.gnu.org/licenses/>.
 **************************************************************************/

package org.omegat.gui.editor.mark;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Polygon;
import java.awt.Rectangle;

import javax.swing.text.JTextComponent;

/**
 * Class to paint a direction marker for bidirectional control characters
 * @author Martin Fleurke
 */
public class BidiPainter extends SymbolPainter {
	
	protected boolean rtl;
	protected boolean ltr;
	
	/**
	 * 
	 * @param c color to use when painting
	 * @param s Bidirectonal formatting character/code that is marked.
	 */
    public BidiPainter(Color c, String s) {
        super(c, s);
        if (symbol.equals("\u200F") || symbol.equals("\u202E") || symbol.equals("\u202B")) {
            rtl = true;
            ltr = false;
        } else if (symbol.equals("\u200E") || symbol.equals("\u202A") || symbol.equals("\u202D")) {
            ltr = true;
            rtl = false;
        }
    }

    protected void paint(Graphics g, Rectangle rect, JTextComponent c) {
        g.setColor(color);
        Polygon p = new Polygon();
        p.addPoint(rect.x, rect.y+rect.height);
        p.addPoint(rect.x, rect.y);
        if (rtl) {
            p.addPoint(rect.x-4, rect.y);
            p.addPoint(rect.x, rect.y+4);
        } else if (ltr) {
            p.addPoint(rect.x+4, rect.y);
            p.addPoint(rect.x, rect.y+4);
        } else {
            p.addPoint(rect.x-2, rect.y);
            p.addPoint(rect.x, rect.y-4);
            p.addPoint(rect.x+2, rect.y);
            p.addPoint(rect.x, rect.y);
        }
        g.fillPolygon(p);
    }

}