* * *

Author Topic: LazPaint features request, ideas, wishes  (Read 12633 times)

circular

  • Hero Member
  • *****
  • Posts: 2602
    • Personal webpage
Re: LazPaint features request, ideas, wishes
« Reply #15 on: May 02, 2016, 06:08:21 pm »
Hello people!

Here is what I've done on SVN:
- added mouse wheel scroll in the image browser (open/save)
- program checks new version only every 30 days
- mouse wheel to zoom image goes by finer steps (100%, 150%, 200%, 300%...)
- added status bar with size of rectangle and other infos
Conscience is the debugger of the mind

staratel20

  • Full Member
  • ***
  • Posts: 199
Re: LazPaint features request, ideas, wishes
« Reply #16 on: May 03, 2016, 08:54:57 pm »
circular: thank for additions! Very wait for scroll with mid-button :). Zoom now fine, IMO better than in photoshop. Only need to add more precise zooming(slower zooming) when holding Ctrl.

Also I told it everywhere, and in this topic want repeat too: think 10 once before add new button and... don't add if possible. The main idea is - interactivity instead of buttons. In this case I talk about pallet. many button in interface tires eyes and take place that can be use in future for more important things. In pallet we can attach popup, where will TMenuItems like "Insert current color" and "Delete this color" (for understanding what means "this" color, color on which clicked may be with little border 3pix width "white-black-white" to be visible with any color). After realize it respective buttons on color selector are not needed anymore. Instead of this two button we can place the area floodfill with current color two. That is because a low filled space(like current little rectangle in left bottom corner) and a large filled space with the same color looks a slight different for the eye(as you see on attached screen).
« Last Edit: May 03, 2016, 09:03:30 pm by staratel20 »
Windows 7 SP1 x64, FPC 3.0.0, Lazarus from trunk: http://svn.freepascal.org/svn/lazarus/trunk

CountIdentity, ModeClassName - good property naming
IdentityCount,  ClassNameMode  - bad property naming

circular

  • Hero Member
  • *****
  • Posts: 2602
    • Personal webpage
Re: LazPaint features request, ideas, wishes
« Reply #17 on: May 03, 2016, 09:33:02 pm »
Ah yes move with the middle button is a good idea. It's done on SVN.

I don't want to remove the buttons in the color window, but I take a note of making a bigger preview of the color.

More suggestions :
- keep content of layers after they are moved
- read/write more formats (LRS, RES, RAW, TIM, BMP 16 bit iGo)
- focus on child folder when going in parent folder in browser
- use fphttpclient and thread to get online files
- layer effects (stroke, shadow) and layer groups
- layer mask
- text layer
- add dark skin option for toolbars
« Last Edit: May 03, 2016, 10:04:26 pm by circular »
Conscience is the debugger of the mind

staratel20

  • Full Member
  • ***
  • Posts: 199
Re: LazPaint features request, ideas, wishes
« Reply #18 on: May 04, 2016, 10:53:32 am »
Thanks, now we have really very useful version! :D

Quote
I don't want to remove the buttons in the color window
ok, but how about a context menu on a single color of pallet?

Quote
- layer effects (stroke, shadow) and layer groups
- layer mask
- text layer
if you do this we'll have(in the end of the end) the photoshop topology. I think AutoCad topology is better. Layer - must be "ideologically" layer, where user can place what he want(text, lines, pen-drawings). Shadow must be a modifier for object(like in 3DMax)  - for text or line or pen-drawing.

P/s: Gimp try to clone Photoshop. In fact is very uncomfortable to use, like Photoshop.
Windows 7 SP1 x64, FPC 3.0.0, Lazarus from trunk: http://svn.freepascal.org/svn/lazarus/trunk

CountIdentity, ModeClassName - good property naming
IdentityCount,  ClassNameMode  - bad property naming

staratel20

  • Full Member
  • ***
  • Posts: 199
Re: LazPaint features request, ideas, wishes
« Reply #19 on: May 04, 2016, 08:47:01 pm »
Also want to mention the main benefits of your app, that I hope will be saved in all future versions:
1) fast loading
2) no splash screen on startup
3) exe-file only - enough to start
4) ini-file(and all what app need to work) created in the same dir, where exe (full Win-registry independent)

All this principles I use in all my app's. Glad to see the same in your work.
Windows 7 SP1 x64, FPC 3.0.0, Lazarus from trunk: http://svn.freepascal.org/svn/lazarus/trunk

CountIdentity, ModeClassName - good property naming
IdentityCount,  ClassNameMode  - bad property naming

circular

  • Hero Member
  • *****
  • Posts: 2602
    • Personal webpage
Re: LazPaint features request, ideas, wishes
« Reply #20 on: May 04, 2016, 11:04:23 pm »
Hi staratel.

I do like to have fast loading and simple binary form. That's a bit because I have learned to program on DOS with Pascal and assembler. That's more familiar to me.

More recently I have been moving a bit towards Dll because it is convenient to do so with .NET. However it is not very cross-platform.

Regarding the Ini files, I don't find XML very readable and registry is not convenient and not cross-platform.

So there is a bit of a mix of reasons why I follow the 4 points you're mentioning.
Conscience is the debugger of the mind

staratel20

  • Full Member
  • ***
  • Posts: 199
Re: LazPaint features request, ideas, wishes
« Reply #21 on: May 05, 2016, 12:18:16 pm »
Quote
More recently I have been moving a bit towards Dll because it is convenient to do so with .NET. However it is not very cross-platform.
There are many versions of .NET Framework and there is nothing more sadly then message "****.dll not found, application will be closed".

I was writing some similar to Paint application, like you(but not as open-source project). But when I found your project I decide that at this time better work on it(as adviser or as developer - not the point), because it more powerful and there already realized some my ideas, that I did not have time to implement. My project was using only one dll (sad about it, but don't know how to workaround it) - FreeImage.dll. And using it only for one thing - fast loading big jpg-files. Maybe in future default JPEG- library(or BGRABitmap-library) will be as fast as FreeImage.

Want to add that known many app, that starts slowly only because of dll-files loading on startup. The good example of working with dll - it is a music sequencer FruityLoops, where VSTi-plugins(virtual instruments for generating sounds) are the dll-files, but app not loading it on startup - respective to dll-file instrument will be loaded only after you add it to sequencer.
Windows 7 SP1 x64, FPC 3.0.0, Lazarus from trunk: http://svn.freepascal.org/svn/lazarus/trunk

CountIdentity, ModeClassName - good property naming
IdentityCount,  ClassNameMode  - bad property naming

staratel20

  • Full Member
  • ***
  • Posts: 199
Re: LazPaint features request, ideas, wishes
« Reply #22 on: May 16, 2016, 03:38:52 pm »
In project testbgrafunc.lpk need to be added  BGRASceneTypes in uses section of  ucube3d.pas ;)

Also be very good:
1) simple example(with right-coding style), where the something with Canvas placed on form(TPanel or TBGRAVirtualScreen - not matter) with(impotant!) no calculations of drawing area. I prefer the black background with white line flying from left to right one time :)
2) to implement .ico load/save support. Delphi icon editor is poor.
3) when I open file in some location and edit it(file) I suspect that after SaveAs I will see the same location, where I open file, but I don't.
« Last Edit: May 16, 2016, 05:21:42 pm by staratel20 »
Windows 7 SP1 x64, FPC 3.0.0, Lazarus from trunk: http://svn.freepascal.org/svn/lazarus/trunk

CountIdentity, ModeClassName - good property naming
IdentityCount,  ClassNameMode  - bad property naming

circular

  • Hero Member
  • *****
  • Posts: 2602
    • Personal webpage
Re: LazPaint features request, ideas, wishes
« Reply #23 on: May 16, 2016, 07:22:27 pm »
Quote
In project testbgrafunc.lpk need to be added  BGRASceneTypes in uses section of  ucube3d.pas
Why? Doesn't it compile?

1) I did not understand
2) Yes, I take a note of that
3) You need to use "Save in same folder" menu for that

Save as keep the same folder as the last save as. This allows for example to open a series of images a save them in another folder, and with anther format.
Conscience is the debugger of the mind

staratel20

  • Full Member
  • ***
  • Posts: 199
Re: LazPaint features request, ideas, wishes
« Reply #24 on: May 16, 2016, 08:50:35 pm »
Quote
Why? Doesn't it compile?
Exactly, message is:
Quote
ucube3d.pas(26,8) Error: Identifier not found "arrayOfIBGRAVertex3D"

>>You need to use "Save in same folder" menu for that
Hm. Think at least it must be under Save As... . Maybe good will:
Code: Pascal  [Select]
  1. Save
  2. Save As...
  3. Save As...[in origin dir]


About (1). I looking examples for to use bgrabitmap class in my apps. But I was wonder - in wiki no one simple example where line moves on some component with canvas(like TPanel). Then I open testbgrafunc, but all of tests are also drawing on TForm, and area "where to draw" are calculating. In umain.pas it's a line:
Code: Pascal  [Select]
  1. CurrentTest.OnPaint(self.Canvas,0,Panel1.Height,ClientWidth,ClientHeight-Panel1.Height);

By Y-axis null is Panel1.Height, not '0'.
Windows 7 SP1 x64, FPC 3.0.0, Lazarus from trunk: http://svn.freepascal.org/svn/lazarus/trunk

CountIdentity, ModeClassName - good property naming
IdentityCount,  ClassNameMode  - bad property naming

circular

  • Hero Member
  • *****
  • Posts: 2602
    • Personal webpage
Re: LazPaint features request, ideas, wishes
« Reply #25 on: May 16, 2016, 10:17:21 pm »
About the error with ArrayOfIBGRAVertex3D, that's already fixed. I have added a definition in BGRAScene3D.

Regarding examples, I see what you're saying. Basically, what is recommended is to use TBGRAVirtualScreen. Indeed it is somewhat complicated to avoid flickering using regular LCL controls.
Conscience is the debugger of the mind

staratel20

  • Full Member
  • ***
  • Posts: 199
Re: LazPaint features request, ideas, wishes
« Reply #26 on: May 17, 2016, 07:44:03 am »
Quote
About the error with ArrayOfIBGRAVertex3D, that's already fixed.
Yes, after update compile well. My apologies.

I write a little example. Think it must be a very basic of tutorial(if drawing output are use all [fast]potential of component):

Code: Pascal  [Select]
  1. unit Unit1;
  2.  
  3. {$mode objfpc}{$H+}
  4.  
  5. interface
  6.  
  7. uses
  8.   Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
  9.   BGRAVirtualScreen,BGRABitmap,BGRABitmapTypes;
  10.  
  11. type
  12.  
  13.   { TForm1 }
  14.  
  15.   TForm1 = class(TForm)
  16.     Timer1: TTimer;
  17.     VS: TBGRAVirtualScreen;
  18.     procedure FormCreate(Sender: TObject; Params: string);
  19.     procedure Timer1Timer(Sender: TObject; Params: string);
  20.   private
  21.     { private declarations }
  22.   public
  23.     { public declarations }
  24.   end;
  25.  
  26. var
  27.   Form1: TForm1;
  28.   b:TBGRABitmap;
  29.   lineX:integer;
  30.   c:TBGRAPixel;
  31.  
  32. implementation
  33.  
  34. {$R *.lfm}
  35.  
  36. { TForm1 }
  37.  
  38. procedure TForm1.FormCreate(Sender: TObject; Params: string);
  39. begin
  40.   b:=TBGRABitmap.Create(VS.Width,VS.Height);
  41.   lineX:=0;
  42.   c:=BGRA(255,255,255,255);
  43.  
  44.   b.FillRect(0,0,VS.Width,VS.Height,clBlack);
  45. end;
  46.  
  47. procedure TForm1.Timer1Timer(Sender: TObject; Params: string);
  48. var
  49.   i:integer;
  50. begin
  51.   b.FillRect(0,0,VS.Width,VS.Height,clBlack);
  52.   b.DrawLine(lineX,10,lineX,60,c,True);
  53.  
  54.   b.Draw(VS.Canvas,0,0,True);
  55.  
  56.   inc(lineX);
  57. end;
  58.  
  59. end.
  60.  
Windows 7 SP1 x64, FPC 3.0.0, Lazarus from trunk: http://svn.freepascal.org/svn/lazarus/trunk

CountIdentity, ModeClassName - good property naming
IdentityCount,  ClassNameMode  - bad property naming

staratel20

  • Full Member
  • ***
  • Posts: 199
Re: LazPaint features request, ideas, wishes
« Reply #27 on: May 17, 2016, 04:57:36 pm »
Also have a little wish. In my editor right mouse button(RMB) was only for one purpose - take color(when Pen tool). Maybe when selected Pen do the same in LazPaint? It's will more comfort than every time select ColorPicker.
Windows 7 SP1 x64, FPC 3.0.0, Lazarus from trunk: http://svn.freepascal.org/svn/lazarus/trunk

CountIdentity, ModeClassName - good property naming
IdentityCount,  ClassNameMode  - bad property naming

circular

  • Hero Member
  • *****
  • Posts: 2602
    • Personal webpage
Re: LazPaint features request, ideas, wishes
« Reply #28 on: May 17, 2016, 10:34:48 pm »
Yes, after update compile well. My apologies.
It's alright. Thanks for notifying in all cases.

Quote
I write a little example. Think it must be a very basic of tutorial(if drawing output are use all [fast]potential of component):
Yes, this works fine on Windows, but it does not on MacOS. To be portable, all drawing need to be done in an OnPaint event. And to have an OnPaint event, one need to invalidate the region to be redrawn. And to avoid flickering one need to inhibit the erase-background event.
Conscience is the debugger of the mind

staratel20

  • Full Member
  • ***
  • Posts: 199
Re: LazPaint features request, ideas, wishes
« Reply #29 on: May 18, 2016, 09:22:44 pm »
Can you modify a little this simple example and paste code here? (maybe also add to the tutorial in future).
Windows 7 SP1 x64, FPC 3.0.0, Lazarus from trunk: http://svn.freepascal.org/svn/lazarus/trunk

CountIdentity, ModeClassName - good property naming
IdentityCount,  ClassNameMode  - bad property naming

 

Recent

Get Lazarus at SourceForge.net. Fast, secure and Free Open Source software downloads Open Hub project report for Lazarus