All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.eclipse.swt.graphics.GCDelegate Maven / Gradle / Ivy

/*******************************************************************************
 * Copyright (c) 2011, 2021 Rüdiger Herrmann and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    Rüdiger Herrmann - initial API and implementation
 *    EclipseSource - ongoing development
 ******************************************************************************/
package org.eclipse.swt.graphics;


abstract class GCDelegate {

  abstract void setBackground( Color color );
  abstract Color getBackground();

  abstract void setForeground( Color color );
  abstract Color getForeground();

  abstract void setFont( Font font );
  abstract Font getFont();

  abstract Font getDefaultFont();
  abstract void setAlpha( int alpha );
  abstract int getAlpha();

  abstract void setLineWidth( int lineWidth );
  abstract int getLineWidth();
  abstract void setLineCap( int lineCap );
  abstract int getLineCap();
  abstract void setLineJoin( int lineJoin );
  abstract int getLineJoin();
  abstract void setLineStyle( int lineStyle );
  abstract int getLineStyle();
  abstract void setLineDash( int[] dashes );
  abstract int[] getLineDash();

  abstract void setClipping( Rectangle rectangle );
  abstract void setClipping( Path path );
  abstract Rectangle getClipping();

  abstract Point stringExtent( String string );
  abstract Point textExtent( String string , int wrapWidth );

  abstract void drawPoint( int x, int y );
  abstract void drawLine( int x1, int y1, int x2, int y2 );
  abstract void drawPolyline( int[] pointArray, boolean close, boolean fill );
  abstract void drawRectangle( Rectangle bounds, boolean fill );

  abstract void drawRoundRectangle( Rectangle bounds, int arcWidth, int arcHeight, boolean fill );
  abstract void fillGradientRectangle( Rectangle bounds, boolean vertical );

  abstract void drawArc( Rectangle bounds, int startAngle, int arcAngle, boolean fill );

  abstract void drawImage( Image image, Rectangle src, Rectangle dest, boolean simple );

  abstract void drawText( String string, int x, int y, int flags );

  abstract void drawPath( Path path, boolean fill );

  abstract void setTransform( float[] elements );
  abstract float[] getTransform();

  protected Rectangle getClippingRectangle( Path path ) {
    if( path != null ) {
      int minX = Integer.MAX_VALUE;
      int minY = Integer.MAX_VALUE;
      int maxX = -Integer.MAX_VALUE;
      int maxY = -Integer.MAX_VALUE;
      float[] points = path.getPathData().points;
      for( int i = 0; i < points.length; i++ ) {
        if( i % 2 == 0 ) {
          minX = Math.min( minX, ( int )points[ i ] );
          maxX = Math.max( maxX, ( int )points[ i ] );
        } else {
          minY = Math.min( minY, ( int )points[ i ] );
          maxY = Math.max( maxY, ( int )points[ i ] );
        }
      }
      return new Rectangle( minX, minY, maxX - minX, maxY - minY );
    }
    return null;
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy