/* * awt.cs * Copyright (c) 2009 kbinani * * This file is part of bocoree. * * bocoree is free software; you can redistribute it and/or * modify it under the terms of the BSD License. * * bocoree 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. */ #if !JAVA namespace bocoree.java.awt { public class Icon { public System.Drawing.Image image; } public class ImageIcon : Icon { public ImageIcon( System.Drawing.Image image ) { this.image = image; } public ImageIcon( Image image ) { if ( image != null ) { this.image = image.image; } } } public class Image{ public System.Drawing.Image image; public int getWidth( object observer ) { return image.Width; } public int getHeight( object observer ) { return image.Height; } } public class Cursor { public const int CROSSHAIR_CURSOR = 1; public const int CUSTOM_CURSOR = -1; public const int DEFAULT_CURSOR = 0; public const int E_RESIZE_CURSOR = 11; public const int HAND_CURSOR = 12; public const int MOVE_CURSOR = 13; public const int N_RESIZE_CURSOR = 8; public const int NE_RESIZE_CURSOR = 7; public const int NW_RESIZE_CURSOR = 6; public const int S_RESIZE_CURSOR = 9; public const int SE_RESIZE_CURSOR = 5; public const int SW_RESIZE_CURSOR = 4; public const int TEXT_CURSOR = 2; public const int W_RESIZE_CURSOR = 10; public const int WAIT_CURSOR = 3; private int m_type = DEFAULT_CURSOR; public System.Windows.Forms.Cursor cursor = System.Windows.Forms.Cursors.Default; public Cursor( int type ) { m_type = type; if ( m_type == CROSSHAIR_CURSOR ) { cursor = System.Windows.Forms.Cursors.Cross; } else if ( m_type == HAND_CURSOR ) { cursor = System.Windows.Forms.Cursors.Hand; } else if ( m_type == TEXT_CURSOR ) { cursor = System.Windows.Forms.Cursors.IBeam; } else if ( m_type == E_RESIZE_CURSOR ){ cursor = System.Windows.Forms.Cursors.PanEast; } else if ( m_type == NE_RESIZE_CURSOR ){ cursor = System.Windows.Forms.Cursors.PanNE; } else if ( m_type == N_RESIZE_CURSOR ){ cursor = System.Windows.Forms.Cursors.PanNorth; } else if ( m_type == NW_RESIZE_CURSOR ) { cursor = System.Windows.Forms.Cursors.PanNW; } else if ( m_type == SE_RESIZE_CURSOR ){ cursor = System.Windows.Forms.Cursors.PanSE; } else if ( m_type == S_RESIZE_CURSOR ){ cursor = System.Windows.Forms.Cursors.PanSouth; } else if ( m_type == SW_RESIZE_CURSOR ){ cursor = System.Windows.Forms.Cursors.PanSW; } else if( m_type == W_RESIZE_CURSOR ){ cursor = System.Windows.Forms.Cursors.PanWest; } else if ( m_type == MOVE_CURSOR ){ cursor = System.Windows.Forms.Cursors.SizeAll; } } public int getType() { return m_type; } } public class Graphics2D { public System.Drawing.Graphics nativeGraphics; public Color color = Color.black; private BasicStroke m_stroke = new BasicStroke(); public System.Drawing.SolidBrush brush = new System.Drawing.SolidBrush( System.Drawing.Color.Black ); private System.Drawing.Font m_font = new System.Drawing.Font( "Arial", 10 ); public Graphics2D( System.Drawing.Graphics g ) { nativeGraphics = g; } public void clearRect( int x, int y, int width, int height ) { nativeGraphics.FillRectangle( System.Drawing.Brushes.White, x, y, width, height ); } public void drawLine( int x1, int y1, int x2, int y2 ) { nativeGraphics.DrawLine( m_stroke.pen, x1, y1, x2, y2 ); } public void drawRect( int x, int y, int width, int height ) { nativeGraphics.DrawRectangle( m_stroke.pen, x, y, width, height ); } public void fillRect( int x, int y, int width, int height ) { nativeGraphics.FillRectangle( brush, x, y, width, height ); } public void drawOval( int x, int y, int width, int height ) { nativeGraphics.DrawEllipse( m_stroke.pen, x, y, width, height ); } public void fillOval( int x, int y, int width, int height ) { nativeGraphics.FillRectangle( brush, x, y, width, height ); } public void setColor( Color c ) { color = c; m_stroke.pen.Color = c.color; brush.Color = c.color; } public Color getColor() { return color; } public void setFont( Font font ) { m_font = font.font; } public void drawString( string str, float x, float y ) { nativeGraphics.DrawString( str, m_font, brush, x, y ); } public void drawPolygon( Polygon p ) { drawPolygon( p.xpoints, p.ypoints, p.npoints ); } public void drawPolygon( int[] xPoints, int[] yPoints, int nPoints ) { System.Drawing.Point[] points = new System.Drawing.Point[nPoints]; for ( int i = 0; i < nPoints; i++ ) { points[i] = new System.Drawing.Point( xPoints[i], yPoints[i] ); } nativeGraphics.DrawLines( m_stroke.pen, points ); } public void fillPolygon( Polygon p ) { fillPolygon( p.xpoints, p.ypoints, p.npoints ); } public void fillPolygon( int[] xPoints, int[] yPoints, int nPoints ) { System.Drawing.Point[] points = new System.Drawing.Point[nPoints]; for ( int i = 0; i < nPoints; i++ ) { points[i] = new System.Drawing.Point( xPoints[i], yPoints[i] ); } nativeGraphics.FillPolygon( brush, points ); } public void setStroke( Stroke stroke ) { if ( stroke is BasicStroke ) { BasicStroke bstroke = (BasicStroke)stroke; m_stroke.pen = bstroke.pen; m_stroke.pen.Color = color.color; } } public Stroke getStroke() { return m_stroke; } public Shape getClip() { Shape ret = new Shape(); ret.region = nativeGraphics.Clip; return ret; } public void setClip( Shape clip ) { if ( clip == null ) { nativeGraphics.Clip = new System.Drawing.Region(); } else { nativeGraphics.Clip = clip.region; } } public void clipRect( int x, int y, int width, int height ) { nativeGraphics.Clip = new System.Drawing.Region( new System.Drawing.Rectangle( x, y, width, height ) ); } public void drawImage( bocoree.java.awt.image.BufferedImage img, int x, int y, object obs ) { if ( img is bocoree.java.awt.image.BufferedImage ) { nativeGraphics.DrawImage( ((bocoree.java.awt.image.BufferedImage)img).m_image, new System.Drawing.Point( x, y ) ); } } public void drawImage( bocoree.java.awt.Image img, int x, int y, object obs ) { if ( img == null ) { return; } nativeGraphics.DrawImage( img.image, new System.Drawing.Point( x, y ) ); } } /*public interface Image{ int getHeight( object observer ); int getWidth( object observer ); }*/ public struct Color { /// /// 黒を表します。 /// public static Color black = new Color( System.Drawing.Color.Black ); /// /// 黒を表します。 /// public static Color BLACK = new Color( System.Drawing.Color.Black ); /// /// 青を表します。 /// public static Color blue = new Color( System.Drawing.Color.Blue ); /// /// 青を表します。 /// public static Color BLUE = new Color( System.Drawing.Color.Blue ); /// /// シアンを表します。 /// public static Color cyan = new Color( System.Drawing.Color.Cyan ); /// /// シアンを表します。 /// public static Color CYAN = new Color( System.Drawing.Color.Cyan ); /// /// ダークグレイを表します。 /// public static Color DARK_GRAY = new Color( System.Drawing.Color.DarkGray ); /// /// ダークグレイを表します。 /// public static Color darkGray = new Color( System.Drawing.Color.DarkGray ); /// /// グレイを表します。 /// public static Color gray = new Color( System.Drawing.Color.Gray ); /// /// グレイを表します。 /// public static Color GRAY = new Color( System.Drawing.Color.Gray ); /// /// 緑を表します。 /// public static Color green = new Color( System.Drawing.Color.Green ); /// /// 緑を表します。 /// public static Color GREEN = new Color( System.Drawing.Color.Green ); /// /// ライトグレイを表します。 /// public static Color LIGHT_GRAY = new Color( System.Drawing.Color.LightGray ); /// /// ライトグレイを表します。 /// public static Color lightGray = new Color( System.Drawing.Color.LightGray ); /// /// マゼンタを表します。 /// public static Color magenta = new Color( System.Drawing.Color.Magenta ); /// /// マゼンタを表します。 /// public static Color MAGENTA = new Color( System.Drawing.Color.Magenta ); /// /// オレンジを表します。 /// public static Color orange = new Color( System.Drawing.Color.Orange ); /// /// オレンジを表します。 /// public static Color ORANGE = new Color( System.Drawing.Color.Orange ); /// /// ピンクを表します。 /// public static Color pink = new Color( System.Drawing.Color.Pink ); /// /// ピンクを表します。 /// public static Color PINK = new Color( System.Drawing.Color.Pink ); /// /// 赤を表します。 /// public static Color red = new Color( System.Drawing.Color.Red ); /// /// 赤を表します。 /// public static Color RED = new Color( System.Drawing.Color.Red ); /// /// 白を表します。 /// public static Color white = new Color( System.Drawing.Color.White ); /// /// 白を表します。 /// public static Color WHITE = new Color( System.Drawing.Color.White ); /// /// 黄を表します。 /// public static Color yellow = new Color( System.Drawing.Color.Yellow ); /// /// 黄を表します。 /// public static Color YELLOW = new Color( System.Drawing.Color.Yellow ); public System.Drawing.Color color; public Color( System.Drawing.Color value ) { color = value; } public Color( int r, int g, int b ) { color = System.Drawing.Color.FromArgb( r, g, b ); } public Color( int r, int g, int b, int a ) { color = System.Drawing.Color.FromArgb( a, r, g, b ); } public int getRed() { return color.R; } public int getGreen() { return color.G; } public int getBlue() { return color.B; } } public struct Rectangle { public int height; public int width; public int x; public int y; public Rectangle( int width_, int height_ ) { x = 0; y = 0; width = width_; height = height_; } public Rectangle( int x_, int y_, int width_, int height_ ) { x = x_; y = y_; width = width_; height = height_; } public Rectangle( Rectangle r ) { x = r.x; y = r.y; width = r.width; height = r.height; } } public struct Point { public int x; public int y; public Point( int x_, int y_ ) { x = x_; y = y_; } public Point( Point p ) { x = p.x; y = p.y; } } public class Font { public const int PLAIN = 0; public const int ITALIC = 2; public const int BOLD = 1; public static readonly string DIALOG = "Dialog"; public static readonly string DIALOG_INPUT = "DialogInput"; public static readonly string MONOSPACED = "Monospaced"; public static readonly string SANS_SERIF = "SansSerif"; public static readonly string SERIF = "Serif"; public System.Drawing.Font font; public Font( System.Drawing.Font value ) { font = value; } public Font( string name, int style, int size ) { System.Drawing.FontStyle fstyle = System.Drawing.FontStyle.Regular; if ( style >= Font.BOLD ) { fstyle = fstyle | System.Drawing.FontStyle.Bold; } if ( style >= Font.ITALIC ) { fstyle = fstyle | System.Drawing.FontStyle.Italic; } font = new System.Drawing.Font( name, size, fstyle ); } public string getName() { return font.Name; } public int getSize() { return (int)font.SizeInPoints; } public float getSize2D() { return font.SizeInPoints; } } public interface Stroke { } public class BasicStroke : Stroke { public const int CAP_BUTT = 0; public const int CAP_ROUND = 1; public const int CAP_SQUARE = 2; public const int JOIN_BEVEL = 2; public const int JOIN_MITER = 0; public const int JOIN_ROUND = 1; public System.Drawing.Pen pen; public BasicStroke() { pen = new System.Drawing.Pen( System.Drawing.Color.Black ); } public BasicStroke( float width ) : this( width, 0, 0, 10.0f ) { } public BasicStroke( float width, int cap, int join ) : this( width, cap, join, 10.0f ) { } public BasicStroke( float width, int cap, int join, float miterlimit ) { pen = new System.Drawing.Pen( System.Drawing.Color.Black, width ); System.Drawing.Drawing2D.LineCap linecap = System.Drawing.Drawing2D.LineCap.Flat; if ( cap == 1 ) { linecap = System.Drawing.Drawing2D.LineCap.Round; } else if ( cap == 2 ) { linecap = System.Drawing.Drawing2D.LineCap.Square; } pen.StartCap = linecap; pen.EndCap = linecap; System.Drawing.Drawing2D.LineJoin linejoin = System.Drawing.Drawing2D.LineJoin.Miter; if ( join == 1 ) { linejoin = System.Drawing.Drawing2D.LineJoin.Round; } else if ( join == 2 ) { linejoin = System.Drawing.Drawing2D.LineJoin.Bevel; } pen.LineJoin = linejoin; pen.MiterLimit = miterlimit; } public BasicStroke( float width, int cap, int join, float miterlimit, float[] dash, float dash_phase ) : this( width, cap, join, miterlimit ) { pen.DashPattern = dash; pen.DashOffset = dash_phase; } } public class Polygon { /// /// 点の総数です。 /// public int npoints; /// /// X 座標の配列です。 /// public int[] xpoints; /// /// Y 座標の配列です。 /// public int[] ypoints; public Polygon() { npoints = 0; xpoints = new int[0]; ypoints = new int[0]; } public Polygon( int[] xpoints_, int[] ypoints_, int npoints_ ) { npoints = npoints_; xpoints = xpoints_; ypoints = ypoints_; } } public class Shape { public System.Drawing.Region region; } public struct Dimension { public int height; public int width; public Dimension( int width_, int height_ ) { width = width_; height = height_; } } public class Frame : System.Windows.Forms.Form { } } #endif