https://github.com/bithatch/jdraw
Very basic, toolkit agnostic Java drawing API
https://github.com/bithatch/jdraw
Last synced: 7 months ago
JSON representation
Very basic, toolkit agnostic Java drawing API
- Host: GitHub
- URL: https://github.com/bithatch/jdraw
- Owner: bithatch
- License: mit
- Created: 2020-12-12T12:49:05.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2020-12-12T22:33:28.000Z (over 5 years ago)
- Last Synced: 2024-12-27T20:35:00.018Z (over 1 year ago)
- Language: Java
- Size: 14.6 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# JDraw
A very simple, no-dependencies drawing API for Java, providing some primitive operations including lines, rectangles, circles, ellipses and arcs.
It doesn't actually draw TO anything, you must provide your own implementation of `Backing` to actually paint the pixels.
This project is intended for use with Snake, my project for Razer devices on Linux, but is made available in case others may find it useful.
It doesn't have anything fancy like anti-alias, transformations or even line widths, and there are currently no plans to develop it any further, but contributions are of course welcome!
## Dependencies
No dependencies other than Java itself.
## Configuring your project
The library is available in Maven Central.
### Maven
```xml
uk.co.bithatch
jdraw
1.0
```
Development versions (whem available), will be the next version number, suffixed with -SNAPSHOT).
```xml
uk.co.bithatch
jdraw
1.1-SNAPSHOT
```
## Usage
To add to your own project, first you need an implementation of `Backing`. For example, if you wanted to draw on a `BufferedImage`, you would do the following.
**Note this is a pointless example really, as BufferedImage can be drawn on with Java's own Graphics API, but it is a quick way to get some useful output from JDraw**.
```java
public class MyBacking implements Backing {
public BufferedImage img;
public MyBacking() {
img = new BufferedImage(512, 512, BufferedImage.TYPE_INT_ARGB);
}
@Override
public int getWidth() {
return img.getWidth();
}
@Override
public int getHeight() {
return img.getHeight();
}
@Override
public void plot(int x, int y, int[] rgb) {
bimg.setRGB(x, y, (0xff << 24) | (rgb[0] << 16) | (rgb[1] << 8) | (rgb[2]));
draw.repaint();
}
}
```
Now you have a `Backing` implementation, you can draw on it using JDraw. The following will draw a 100x100 red rectangle at 10, 10.
```java
MyBacking backing = new MyBacking();
RGBCanvas canvas = new RGBCanvas(backing);
canvas.setColour(RGBCanvas.RED);
canvas.fillRect(10, 10, 100, 100);
// Now do something useful with your drawing, for example save it as a PNG..
ImageIO.write(backing.img, "png", new File("my-image.png"));
```