/*
* 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