Showing posts with label Graphos. Show all posts
Showing posts with label Graphos. Show all posts

Friday, August 17, 2018

Graphos 0.7 released

Graphos 0.7 has been released a couple of days ago!

What's new for GNUstep's vector editor?
  • improved Bezier path editor (add/remove points)
  • Knife (Bezier Path splitting) instrument fixed and re-enabled (broken since original GDraw import!)
  • important crash fixes (Undo/Redo related)
  • Interface improvements to be more usable with Tablet/Pen digitizer.
Graphos continues to work on GNUstep for Linux/BSD as well as natively on MacOS.

Graphos running on MacOS:

Tuesday, July 17, 2018

Graphos GNUstep and Tablet interface

I have acquired a Thinkpad X41 Tablet and worked quite a bit on it making it usable and then installing Linux and of course GNUstep on it. The original battery was dead and the compatible replacement I got is bigger, it works very well, but makes the device unbalanced.

Anyway, my interest about it how usable GNUstep applications would be and especially Graphos, its (and my) drawing application.

Using the interface in Tablet mode is different: the stylus is very precise and allows clicking by pointing the tip and a second button is also possible. However, contrary to the mouse use, the keyboard is folded so no keyboard modifiers are possible. Furthermore GNUstep has no on-screen keyboard so typing is not possible.

The classic OpenStep-style Menus work exceedingly well with a touch interface:the menus are easy to click and teared-out they remain like palettes, making toolbars not necessary.
This is a good start!

However, Graphos was not easy to use: aside from typing text, with no keyboard, several components requried typing (e.g. inserting Line Width).
I worked on the interface so that all these elements also had a clickable interface (e.g. Stepper Arrows). Duplicating certain items available in context-menus in regular menus, which can be detached, provided also an enhancements.
Standard items like the color wheel already work very well


Drawing on the screen is definitely very precise and convenient. Stay tuned for the upcoming release!

Friday, March 16, 2018

Graphos printing fix

Important Graphos fix.

Graphos had issues when printing and the view was not 100%: to speed up drawRect, all objects were represented scaled, so that they had not to be scaled each time, which especially for Bezier Paths is expensive with all the associated handles.

Thie issue is finally fixed by either caching both original and zoomed values for each object and conditionally drawing them depending on the drawingContext.

Here the proof with GSPdf showing the generated PDF!



Soon a new release then!

Sunday, April 23, 2017

GNUstep Graphos 0.6

After (too) many years, finally a new release of Graphos.

This release has two new important features: cusps and images.

Splines support now cusps, that is left and right asymmetrical tangents to a control point.

A new image item object exists. This allows you to paste a preferably small image and move it around like it were a box, resizing it at will.
This is quite useful to be able to manually overlay lines and trace images.
Since the image is directly encoded in the file and not saved as a separate image it is not very efficient and using large images is not advisable. In the future a new bundle file format needs to be implemented.



The screenshot shows an example of tracing the GNUstep logo imported as a bitmap, using the cusp point in the upper right.

Many bug fixes and improvements in these past years, some major:
  •  Text improvements (editor display, reading/&saving, Mac support)
  •  Circles/Ovals save/read fix
  •  Properties inspector fixes
  •  Portability fixes
To support cusps, the file format changed again, reading of old formats is still supported.

Saturday, February 28, 2015

Graphos bitmap image display

Graphos is the vector-drawing application for GNUstep (and MacOS) of the GNUstep Application Project.

While it is centered on drawing bezier paths and derived shapes, I added support for copy&pasting images. While these images cannot be saved (the format doesn't support it yet) they still can be useful: since they are layered as any other object (and transparency alpha channel is honoured too), one can do interesting things as in this example:

We paste in the original image for LaternaMagica's icon. We start tracing it with simple shapes, here shown in black.


One can easily fit curves over the image, essentially doing a hand-trace. Very important is the usage of cusps and symmetric handles in bezier-paths, which will be the new feature of the upcoming Graphos release.

After a quick work, this is the first rough result:

I still need to fix some details: the display at zoom rates different than 100% doesn't work correctly with images.

Sunday, November 24, 2013

Graphos supports Cusps!

Since many years, Graphos supports nice-looking and well known bezier-paths. However it always supported, by the design inherited by GDraw, symmetric handles. Since the handle points define the curve's tangent to the control point, there will be no discontinuity. That is, each control point's handles are equal and symmetric, allowing for smooth curves like here:



I added now support for splitting handles and making them a-symmetric, thus being able to draw cusps in a line.

While in path-editing (white arrow) a contextual menu will allow you to choose what kind of type the node is.

To support this new kind of information which is associated with each node, I changed the file format. Paths are now saved as a series of control points with their associated type, instead of the older format that was essential PS data, where each line-to and move-to was described. The latter format split information about each control-point between left-and-right and while more compact, did not allow to add the new information.

Anyway, here the result, left a smooth path, right the same path where the central point has been "split".





Note to self: this will allow to draw Graphos' own logo in Graphos much better. Something to do the next time I'm bored!

Saturday, November 23, 2013

Graphos 0.5 released

The GNUstep Application Project announced a new release of its vector drawing application, Graphos on Oct 15th.

Improved text object and handling, improved selection handling (e.g. for multiple objects that are group selected) and many other bugs. The format is 0.4 compatibile, although text object might be placed differently if loaded from old files, due to the old bug.

Friday, June 28, 2013

Graphos: text alignment and other fixes

I finally fixed text alignment in Graphos! It was broken since a long time, perhaps since Graphos 0.1, probably due to the conversion made from GDraw. You had the controls in the editor, but then it didn't draw correctly!





Another long-standing bug was the manipulation of handles of a closed bezier path: the handles inside the path could not be touched. I think this bug existed even in GDraw!


A lot of work then went into restructuring the whole architecture that handles the zooming of the view. previously, everything was recomputed, there was no notion of original size, everything was transformed back and forth on the fly. While quick and easy, this provided serious problems when saving! Furthermore it means that there is data corruption when performing zooms!

Now, the original information is stored inside each object and everything is then calculated for representation. Some zoomed data is pre-calculated, other not. Probably there can be quite some optimization, but first everything needs to be debugged, since this is a quite consistent change. No new format is necessary since previosuly saving with a zooom different from 100% resulted in a broken file anyway.

Thursday, June 27, 2013

Graphos: new path editing

I changed the way selection and editing of paths and objects work in Graphos.

Previously, the program attempted to be smart: the "white" arrow tool would auto-select an object and start editing it. Clicking outside would deselect it.

This behaviour seems smart, but with many objects, with control poitns close together, it could drive you crazy. I thus changed the behaviour, by differentiating the black arrow and the white arrow tools  more:
  • the Black Arrow selects and unselects the whole object
  • the White Arrow selects and modifies control points, but does not change the object selection
  • the White Arrow only selects control points within the current selected object
  • missing a control point with the White Arrow does not deselect the object

This arrangement makes the two tools more orthogonal. It looks perhaps a bit more cumbersome for basic operation, but it ends to be much easier when objects overlap. Especially when using a graphics tabled this makes a huge improvement in my opinion.

And to close, just a drawing to show the current capabilities of Graphos. Making different shades is very easy with the new


Thursday, April 04, 2013

Graphos 0.4

Graphos 0.4 is out!

  • The Text editor now uses the standard font panel 
  • selection improved
  • mouse constraints for boxes and circles
  • undo for pasteboard operations
  • many bug fixes
  • 64bit fixes
Some shapes fun


Tuesday, June 08, 2010

Graphos released

Today is my birthday and I am pleased to finally release Graphos 0.1!

Graphos is a new version of GDraw I was working over the past few years, read past blog entries about it. It is a vector drawing application for GNUstep.

Graphos is available from the GNUstep Application Project.

Thursday, January 28, 2010

Graphos has undo...

Graphos (GAP Vector editor) got undo support. Add/remove shapes (that worked already) and proper undo of moving, inspecting and editing shapes.

This required implementing shallow vs. deep copy of the objects, but the deep copy needs to be smart about which references are indeed duplicated and which not... A bit of fun programming!

Friday, January 08, 2010

Native theming on Windows progress


Scrollbars now draw properly on Windows using the native WinUXTheme, sizing and placing is correct.


In the screenshot you can see Graphos running with the current version of the native windows theme.

Monday, December 28, 2009

Graphos: vector Drawing application for GNUstep


A long time ago 10 years now, Enrico Sersale began to work on a very interesting and promising application: GDraw. A vector drawing application for GNUstep. Its spline drawing capabilities and document-based design were very advanced for those early days of GNUstep.

A long time passed, there were no further developments and the application bitrotted, starting not to compile any more under GNUstep or not working properly in any case.

I decided to make GDraw come back from the ashes under the name of Graphos. It took me a lot of work to bring it up-to-date.

From a user perspective little has changed, as a kind of tribute to the original work I left the user-interface essentially as-is, planning to change and enhance it only in the next release. However when the application was written, Gorm was in its infancy so for example the Menus were hard-coded. Now they are done properly in Gorm.

All drawing operations were PostScript based, I converted them to use NSBezierPath, this makes the application portable to Macintosh and Cocoa, as the attached screenshot testifies.

I wanted then to bug-.fix and complete some of the existing functions, The when I tried to complete the implementation of the "Box" tool, I found out that the architecture was unclear and limited making it next to impossible to continue.

The upcoming task was thus an incremental re-factoring of the application core. The code itself was almost untouched, but a clearer distinction was formed between Editors and Objects (improving also the file format, making it Editor independent). Object inheritance permits now easier extension and organization of the code.

Now Graphos works on Mac and GNUstep almost like its predecessor GDraw, I intend to make a preliminary release soon and then evolve its missing functions and perform more refactoring.

The file format changed only little and Graphos is able to read GDraw files (but not the opposite) due to a better Editor/Object distinction.

Almost a tribute to a ghost from the past, I hope Enrico will appreciate the efforts.

As usual, the application is part of GAP, the GNUstep Application Project where it finds its new home.