Java-Gaming.org Hi !
Featured games (83)
games approved by the League of Dukes
Games in Showcase (513)
Games in Android Showcase (121)
games submitted by our members
Games in WIP (577)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: 1 [2] 3 4
  ignore  |  Print  
  Paint.JAVA - Attempt at cloning Paint.NET (with cross-platform support)  (Read 10831 times)
0 Members and 1 Guest are viewing this topic.
Offline Longor1996
« Reply #30 - Posted 2013-09-30 17:44:22 »

I made a pull request on GitHub for a small and simple Plugin-System, which just loads Jar-Files and calls their "init" method using the Paint main-class as a paramter. It works and is very simple, for now.

- Longor1996

Sorry for my bad English! That's because i am from Germany.
Offline EmanP

Junior Duke


Projects: 2
Exp: 3 years


Satisfaction never guaranteed.


« Reply #31 - Posted 2013-09-30 18:15:14 »

I only used windows ever, but yeah, this is in complete spirit of write once- run everywhere, and I completely support it! There is too much software one can only run on computers that you don't have.

Signed- EmanP
Offline Mac70
« Reply #32 - Posted 2013-09-30 18:41:30 »

I vote for opengl rendering for blazing fast speeds Cheesy

In my opinion he shouldn't use LWJGL as currently you can make only one display using it.

Check out my Devblog! Smiley
Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline quew8

JGO Coder


Medals: 31



« Reply #33 - Posted 2013-09-30 19:05:02 »

A) @Mac70 Not technically true http://lwjgl.org/javadoc/org/lwjgl/opengl/AWTGLCanvas.html although I've only ever heard of a few people using this. It also won't be true for much longer when LWJGL 3.0 arrives.

B) Out of interest @Mac70, how is that particularly a problem for a Paint.NET clone?

C) @HeroesGraveDev has written this application to where it is now and has already stated that he has considered using OpenGL and decided against it. Why don't we let him create his own program the way he wants to. I'm not trying to get at anyone but if it were me, this kind of thing would really annoy me.
Offline Mac70
« Reply #34 - Posted 2013-09-30 19:09:05 »

In Paint.NET, you have many windows on screen - you can freely drag them, even outside the program window - in my opinion this is very useful. Wink

Check out my Devblog! Smiley
Offline quew8

JGO Coder


Medals: 31



« Reply #35 - Posted 2013-09-30 19:16:54 »

If it was me doing it (which I hasten to add it most certainly isn't) and I was using OpenGL (again debatable in itself) I would only have the central view as an OpenGL display. The rest would be Swing / JavaFX. The previews could be images fetched from OpenGL.
Offline Mac70
« Reply #36 - Posted 2013-09-30 19:52:47 »

Mixing Swing and LWJGL is really, really bad idea - believe me, I am developing an application which is mixing them. Wink

Check out my Devblog! Smiley
Offline Herjan
« Reply #37 - Posted 2013-09-30 20:02:11 »

Mixing Swing and LWJGL is really, really bad idea - believe me, I am developing an application which is mixing them. Wink

Whats the problem?

Offline quew8

JGO Coder


Medals: 31



« Reply #38 - Posted 2013-09-30 20:10:35 »

@Mac70, so am I, literally as we speak. I too would like to know what the problem is.
Offline Mac70
« Reply #39 - Posted 2013-09-30 20:18:56 »

Input fighting and problems with rendering if Swing components cover LWJGL canvas at the same window.

Check out my Devblog! Smiley
Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline Nate

JGO Kernel


Medals: 150
Projects: 4
Exp: 14 years


Esoteric Software


« Reply #40 - Posted 2013-09-30 21:05:22 »

scene2d would be great here. Cheesy

Offline HeroesGraveDev

JGO Kernel


Medals: 269
Projects: 11
Exp: 2 years


┬─┬ノ(ಠ_ಠノ)(╯°□°)╯︵ ┻━┻


« Reply #41 - Posted 2013-09-30 21:56:43 »

It's taking upto three seconds to complete the paint bucket action.

You should have seen what it was like before I optimised it. Tongue

In other news: I merged the PluginManager, so now you can make/use plugins, if you know how (I'll have to look at the code/ask Longor the specifics on how to make a plugin). I'll make a wiki for it sometime soon.

ALSO: No, I am not using OpenGL

Offline HeroesGraveDev

JGO Kernel


Medals: 269
Projects: 11
Exp: 2 years


┬─┬ノ(ಠ_ಠノ)(╯°□°)╯︵ ┻━┻


« Reply #42 - Posted 2013-10-01 06:01:17 »

Paint.JAVA is Novice-Pixel-Art-Friendly!



Also, I'm working on some plugin tutorials at the wiki.

(Thank you very much for the plugin manager Longor1996, you saved me lots of time.)

(EDIT: Oh crap. I forgot to detail the top of his helmet. Too lazy to fix Wink)

Offline relminator
« Reply #43 - Posted 2013-10-01 07:58:52 »

Looks great!  Will this have a windows version?
Offline Mads

JGO Ninja


Medals: 26
Projects: 3
Exp: 6 years


One for all!


« Reply #44 - Posted 2013-10-01 10:07:01 »

Looks great!  Will this have a windows version?

The jar works fine under windows, if that's what you mean.

Offline Longor1996
« Reply #45 - Posted 2013-10-01 11:39:07 »

The plugin-manager was merged?
Now thats good news.

Okay, so some facts about it: (Should be the same even after the merge)
- Plugins are Jar-Files (or folders, but thats the unfinished thing!)
- Plugins need a info-file inside them called "plugin.info". (Used to speed up the loading process)
- Plugins must extend the class "Plugin" from the Paint.JAVA application jar-file.
- The main-class of the plugin is identified solely by the "extends Plugin" and the "plugin.info" file in the plugins jar-file.
- The main-class also has to be inside a package, ("package XXX" is the most minimum needed) or else the main-class cant be found.

- Longor1996

Edit: Realized some stuff was changed by heroesgrave. Lets download the source and expand it even more!
Edit: Even more changes.
Edit: You broke the system @heroesgrave. It doesnt work anymore.

And here is why:
Plugins are loaded by loading their main-class from the jar-file and calling its constructur.
In the system I made, the constructor is empty, so I can just call the "newInstance"-method of the class object, and the plugin is succesfully loaded.
What you did (accidentally without knowing), is that you put in a constructor into the Plugin-class, which killed the system, because it can no longer call the empty constructor, since there is none if you define any constructor but not the empty one.

The fix?

This:
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
try
{
   Plugin newPluginInstance = pluginClass.newInstance();
   this.loadedPlugins.add(newPluginInstance);
   System.out.println("[PluginManager] Plugin " + newPluginInstance.name + " loaded.");
}
catch(ReflectiveOperationException e1)
{
   e1.printStackTrace();
}



Has to be changed into this:
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
try
{
   Plugin newPluginInstance = pluginClass.getConstructor(String.class).newInstance(jarName);
   this.loadedPlugins.add(newPluginInstance);
   System.out.println("[PluginManager] Plugin " + newPluginInstance.name + " loaded.");
}
catch(ReflectiveOperationException e1)
{
   e1.printStackTrace();
}


Thats why reflection is dangerous to use. It can blow up into your face at every moment, including when you at least expect it.
I fixed it in my local copy.
Just copy the posted code and replace it, and it will work correctly again.


Edit: He fixed it.

Edit:
Oh look! Its another pull request!
And it contains a plugin viewer for the plugin-manager!

Please dont refactor the code too much this time, its a lot of hassle to correct my workspace when you make commits.
(I am using the GitHub client. You make changes, I see them and eclipse includes them instantly, causing errors without end!)

Have a nice day!

- Longor1996

Sorry for my bad English! That's because i am from Germany.
Offline HeroesGraveDev

JGO Kernel


Medals: 269
Projects: 11
Exp: 2 years


┬─┬ノ(ಠ_ಠノ)(╯°□°)╯︵ ┻━┻


« Reply #46 - Posted 2013-10-01 19:59:11 »

Ah. Sorry about the refactoring. I'll try not to change too much this time.

But just one thing:

Just because the super-class has a string constructor doesn't mean the actual plugin has to.
For example, the constructor:
1  
2  
3  
4  
public MyPlugin()
{
    super("My Plugin");
}

Is completely valid, and works with the old code, as it has no arguments.

However, perhaps I should add a default constructor that simply sets the name to "Unnamed Plugin" to avoid confusion.

Apart from that, I don't think I'll need any other major changes.

I'll have a look at the plugin viewer shortly.

Offline HeroesGraveDev

JGO Kernel


Medals: 269
Projects: 11
Exp: 2 years


┬─┬ノ(ಠ_ಠノ)(╯°□°)╯︵ ┻━┻


« Reply #47 - Posted 2013-11-05 04:40:09 »

Just posting to bump, and to say that this project is not dead.

It's just that there is a lot of work going on through Github (Two contributors other than me - Yay!), and it's not worth posting every little feature or update.

Anyway, here's a general update on what's going on:

- Plugins are supported (although I need to update the tutorial on how they work).
- Supports left/right click for different colours.
- Just recently (a few minutes ago) added support for quick entering of hex-colour-codes.
- One of the other contributors is working on an easier way to implements tools using Graphics2D.
- Every now and then, I add in a new tool or image operation, most of the time as I need them for my pixel art.
- Selection, moving, copying/pasting etc. has had a little bit of work done on it, but is still quite a way off. The main issue at the moment is the selection.
- There is a pixel grid. I think this was added a while ago, but I can't remember if I properly announced it.

EDIT: GitHub Link so you don't have to scroll to the first post. Also contains download links.

Offline kpars

JGO Wizard


Medals: 97
Projects: 4
Exp: 3 years


Extreme Typist.


« Reply #48 - Posted 2013-11-05 13:40:13 »

Great to know! I'm quite excited for this project to be "done".

Have any features in plan for non-digital-art support? Like the "Soften Portrait" function in Paint.NET? If those features came in, I would be using this right now. 

- Jev

Offline lcass
« Reply #49 - Posted 2013-11-05 16:30:32 »

I think really now the only stuff that would be neat was polishing this project off with a nice Gui a few extra tools cropping support (if it doesnt have it already havent seen the project in a while) It would be a great replacement for paint.net.   Does it support custom exports? I think that would be really useful allowing support for python images.
Offline vbrain
« Reply #50 - Posted 2013-11-05 17:10:32 »

Nice. I just downloaded it and I'm impressed. I think the menu bars are a bit too bloated.



This needs to have an eraser tool.
Offline Longor1996
« Reply #51 - Posted 2013-11-05 18:53:10 »

Does it support custom exports? I think that would be really useful allowing support for python images.

Should I go and implement that one?
I think I can try! Smiley

- Longor1996

Sorry for my bad English! That's because i am from Germany.
Offline saucymeatman
« Reply #52 - Posted 2013-11-05 19:47:47 »

Ive been using this quite a bit, it's really a great project.
Some features that would be cool to see :
~Marquee tool, (copy/paste/flip)
~Crop, maybe even crop to selected marquee area
Offline Longor1996
« Reply #53 - Posted 2013-11-05 20:03:03 »

Done!

I sent you a Pull-Request @HeroesGraveDev!

The new save-system allows for 4 formats now:
- PNG
- BMP
- JPG
- GIF (No Animations!)

EDIT:
Another Pull-Request!

This time it is:
- Added new ImageExporter for 'BIN - Raw Binary Image Data Format'.
- Added new ImageExporter for 'TGA - Tagged Image File Format'.
- Added custom ImageImporter system.
- Added new ImageImporter for 'BIN - Raw Binary Image Data Format'.
- Added a 'Unsafe' utility class, which includes a fallback in the (rare?) case Unsafe is not avaible.
- Moved ImageExporter into the correct package.
- Added simple error message dialogue to the Image save operation.
- Put my name into the copyright notice in the files I created/modified.
- Fixed some mistakes from the last pull request, and some bugs.
- Fixed a FATAL mistake in the image loading routine!


Edit:
I am in a serios coding mood right now!
Have another pull-request!

This time including:
- Refactored Image Import/Export classes. (Now they all got their own classes)
- Added a new fancy compressed binary image exporter (ZBIN instead of BIN).
- Added new ImageOps: RotateRightBy90°, Flip vertically, Flip Horizontally, White Noise, Simplex Noise, Simple Blur, Simple Sharpen
- Added ICONS. Lots of them! (Some are still missing though)
- Generated a nice and fancy javadoc for the entire project.
- Fixed a FATAL bug in the TGA exporter!

Have a nice day!

- Longor1996

Sorry for my bad English! That's because i am from Germany.
Offline HeroesGraveDev

JGO Kernel


Medals: 269
Projects: 11
Exp: 2 years


┬─┬ノ(ಠ_ಠノ)(╯°□°)╯︵ ┻━┻


« Reply #54 - Posted 2014-01-03 21:39:18 »

After 3 days of hard work, Paint.JAVA v0.9 is ready!

Latest download: Here, as always.
Github: https://github.com/HeroesGrave/Paint.JAVA

I decided to draw bright transparent scribbles everywhere before writing Paint.JAVA, so here's a screenshot.


Features:

New Drawing System. Saves memory and CPU time while still being fully functional. You probably won't notice a difference, but I'm just telling you that I was working on something over the last few days. Wink

Layers. These are quite different to most other image-editing programs. While others use a list of layers, Paint.JAVA organises them into a tree structure. I must warn you that layer manipulation is not fully functional yet, so I recommend keeping all your layers in the first level (under "Base"), otherwise you will have some trouble rearranging them. F6 opens the layer manager. The controls should be easy enough to work out.

One thing to look out for is that undo/redo is layer-specific. If you draw something on a layer and want to undo it, you have to go back to that layer. Think of it as each layer being treated as a separate image, but in the same document.

A few minor changes to Brush and Eraser.

Proper transparency! I've copied Paint.NET on this one. Transparent colour in the same layer replaces, Transparent colour in a different layer blends.

Known Problems:

Can't resize/rotate due to problems with the new drawing system. Make sure your image is the right dimensions first.

I think I broke the TGA exporter.

There is no layered export format. All your layers will be merged when saving, but will remain in place in the application. I'm going to work on a new format to support layered image exporting/importing.

I do not recommend using this build for much serious work.
By all means, test it, or the bugs will slip through to v1.0.
It is perfectly capable of doing pixel art, but some features are missing that could make things hard for you.
But if you are wanting to do proper work with it, wait for v1.0 in a few days.

Offline HeroesGraveDev

JGO Kernel


Medals: 269
Projects: 11
Exp: 2 years


┬─┬ノ(ಠ_ಠノ)(╯°□°)╯︵ ┻━┻


« Reply #55 - Posted 2014-01-03 21:51:04 »

Oops. There was a bug with loading images.

Fixed!

(To show how silly it was: The code I had to change)

Offline Longor1996
« Reply #56 - Posted 2014-01-03 23:48:25 »

*syncs the fork and starts going trough the code, adding stuff, and looking for bugs while doing so*

I already found some very minor mistakes in the code.
There are mistakes in the code that are so minor that they don't actually need to be removed.

Have a nice day!

- Longor1996

Sorry for my bad English! That's because i am from Germany.
Offline HeroesGraveDev

JGO Kernel


Medals: 269
Projects: 11
Exp: 2 years


┬─┬ノ(ಠ_ಠノ)(╯°□°)╯︵ ┻━┻


« Reply #57 - Posted 2014-01-04 02:08:20 »

Dev builds are now available here in case anyone is interested.

I think I'm starting to understand this Git stuff.

Edit: For an idea of what's going on with the project, this is your best source of information. I'm using the issues page as both normally as a bug tracker, but also as a TODO list.

Offline arttu
« Reply #58 - Posted 2014-01-14 06:07:42 »

Very nice project!
Offline HeroesGraveDev

JGO Kernel


Medals: 269
Projects: 11
Exp: 2 years


┬─┬ノ(ಠ_ಠノ)(╯°□°)╯︵ ┻━┻


« Reply #59 - Posted 2014-01-19 04:04:27 »

Well, I just noticed Github had a Traffic monitor, so I decided to see what was linking to the project.

#1 was Reddit's /r/opensource. Someone posted it 2 weeks ago and I didn't notice. Unfortunately, the comments were the classic "The developer should use GIMP".

#2 was JGO.

#3 was some Japanese website. I translated the page with Google:
Quote
There is a software called Paint.NET to the famous painting of open source software . It is developed using the . NET as the name . What happens where if you made ​​in Java clone of Paint.NET. It will be Paint.JAVA course .

Have tried . UI is simple, but the minimal functionality has been implemented .

And you can change the color , you can draw a circle or square .

Layer and change of color is supported .

Basic functions still only honest I have not been implemented , but to use it or incorporated into other software looks good . Also , looks good as an aid in handling graphics as a Java application .

In addition you will also advantage is to operate in a multi- platform Java that it becomes equivalent to Paint.NET .

Paint.JAVA is an open source Java software made ​​, the GPL v3.

#4 was Github, #5 was Google. #6 was Facebook. The rest weren't notable.

Pages: 1 [2] 3 4
  ignore  |  Print  
 
 
You cannot reply to this message, because it is very, very old.

 

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

theagentd (20 views)
2014-10-25 15:46:29

Longarmx (53 views)
2014-10-17 03:59:02

Norakomi (47 views)
2014-10-16 15:22:06

Norakomi (35 views)
2014-10-16 15:20:20

lcass (39 views)
2014-10-15 16:18:58

TehJavaDev (69 views)
2014-10-14 00:39:48

TehJavaDev (69 views)
2014-10-14 00:35:47

TehJavaDev (61 views)
2014-10-14 00:32:37

BurntPizza (74 views)
2014-10-11 23:24:42

BurntPizza (46 views)
2014-10-11 23:10:45
Understanding relations between setOrigin, setScale and setPosition in libGdx
by mbabuskov
2014-10-09 22:35:00

Definite guide to supporting multiple device resolutions on Android (2014)
by mbabuskov
2014-10-02 22:36:02

List of Learning Resources
by Longor1996
2014-08-16 10:40:00

List of Learning Resources
by SilverTiger
2014-08-05 19:33:27

Resources for WIP games
by CogWheelz
2014-08-01 16:20:17

Resources for WIP games
by CogWheelz
2014-08-01 16:19:50

List of Learning Resources
by SilverTiger
2014-07-31 16:29:50

List of Learning Resources
by SilverTiger
2014-07-31 16:26:06
java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!