The contest aims at: - Testing your skills, giving yourself a little challenge! - Showing your skills, so that we can enjoy them! - Teaching others as they can look at your code afterwards. Every program will be mentionned at the end of the contest and their code published as GPL or any other open source variants. Programs that are considered to be in a similar category will be ranked using a public poll. The first of each category will be a winner! The others will be venerable participants. Note: if you are not registerd on the forum already, it is easy to do so in a few mintues. You can start by clicking on Register in the top right corner. | ... | Suggested categories of program: - UI design: create controls and an interface using BGRABitmap. You can get some inspiration from BGRAControls. - Photo manipulation: create new images from exiting photos using code, create filters, etc. - Rendering: create images from scratch just using code, create textures, etc. - Gaming: create a 2d game using BGRABitmap. If you need high speed rendering on the whole screen, it is recommended to use BGRAOpenGL. Those categories are suggested. You are free to do something different. |
I'll do my best. Rendering category remembers me the Demoscene contest (you can look at youtube). That kind of contest was my inspiration on suggesting this.Ah yeah I remember. In particular the famous Future crew. :)
Is there limits for participant's programs count in any way?
I think there is not. I think should be only one by category.You are right but because its the first contest and maybe low participants count it will good to havent limit for now but Im agree with you and try to choose only one.
Edit: If you do more than one by category maybe will be right to choose just one to participate in the poll so everyone has the same chances to win.
What end date for registration? What end date for posting the programs?I don't have idea for registration but for posting one month is good I think.
You are right but because its the first contest and maybe low participants count it will good to havent limit for now but Im agree with you and try to choose only one.QuoteWhat end date for registration? What end date for posting the programs?I don't have idea for registration but for posting one month is good I think.
kewl contest...You have time,Please do.
as i've not done anything with BGRABitmap, i haz a sad.
Quotekewl contest...You have time,Please do.
as i've not done anything with BGRABitmap, i haz a sad.
@aradeonas: I've counted myself 8)Very very good.
...
I'll keep my submission video but I'll optimize my code to keep it more readable and faster.
Nicely compiled and tested on x64_64-linux-qt, looks good for a music player visualization.Thanks.As I said if anyone want to make it real please let me know.
function TWallOfTiles.WallEffect1(w, h: integer; Percent: single): TBGRABitmap;
var
layer: TBGRABitmap;
i, j, ww, hh: integer;
p1, p2: TPointF;
c1, c2: TBGRAPixel;
co: integer;
band,bandVertSize,bandCount,remainY,deltaY: integer;
begin
Result := TBGRABitmap.Create(w, h);
ww := Result.Width;
hh := Result.Height;
bandVertSize := 65536 div ww;
if bandVertSize < 8 then bandVertSize := 8;
bandCount := (hh+bandVertSize-1) div bandVertSize;
layer := TBGRABitmap.Create(ww,bandVertSize);
for i := 1 to 5 do
begin
case i of
1:
begin
c1 := BGRA(179, 130, 210, 255);
c2 := BGRA(255, 255, 255, 255);
p1 := PointF(-ww / 5, -hh / 5);
p2 := PointF(ww, hh);
co := 2;
end;
2:
begin
c1 := BGRA(49, 206, 148, 255);
c2 := BGRA(255, 255, 255, 255);
p1 := PointF(ww / 3, hh * 1.1);
p2 := PointF(0, 0);
co := 2;
end;
3:
begin
c1 := BGRA(131, 198, 57, 255);
c2 := BGRA(255, 255, 255, 255);
p1 := PointF(ww * 1.1, hh / 2);
p2 := PointF(ww * 0.2, hh / 2);
co := 2;
end;
4:
begin
c1 := BGRABlack;
c2 := BGRA(255, 255, 255, 255);
p1 := PointF(ww, -hh / 2);
p2 := PointF(ww / 2, hh / 2);
co := 1;
end;
5:
begin
c1 := BGRA(0, 0, 0, 0);
c2 := BGRAWhite;
p1 := PointF(-ww / 5, hh * 1.2);
p2 := PointF(ww / 4, hh * 4 / 5);
co := 3;
end;
end;
remainY := hh;
deltaY := 0;
for band := 0 to bandCount-1 do
begin
deltaY += bandVertSize;
layer.GradientFill(0, 0, layer.Width, remainY, c1, c2, gtRadial, PointF(p1.x,p1.y - deltaY),
PointF(p2.x,p2.y - deltaY), dmSet);
for j := 1 to co do
Result.BlendImage(0, deltaY, layer, boMultiply);
remainY -= bandVertSize;
end;
end;
layer.Free;
end;
Hi Leledumbo! How are you doing?Fine, I'm still here, in other sections to be precise. I'm bad at applications like this, I'm more comfortable to code non (or at least simple) UI things such as writing libraries or framework, services, web grabbers, etc. so I'm just gonna be a spectator here.
What are you preparing Circular? You want to win us with something big, I feel it.. ;)I feel that too ,but it not easy as it seems :D
Well you did a very good job, it is not going to be easy.Dont let it for the late,so maybe we got time to try again :D
But anyway, I am very happy that your demos are great. :)
And mine will be too! 8-)
@aradeonas: Nice... I would love to use this in XiXMusicPlayer (http://www.xixmusicplayer.org (http://www.xixmusicplayer.org))Thank you.I will be more than happy.
I already have a Fullscreen MediaMode, but it would be nice to create some plugin support, so extras like this can be added on the fly instead of hardcoded in the XiX Source code. :D
@aradeonas: Nice... I would love to use this in XiXMusicPlayer (http://www.xixmusicplayer.org (http://www.xixmusicplayer.org))
I already have a Fullscreen MediaMode, but it would be nice to create some plugin support, so extras like this can be added on the fly instead of hardcoded in the XiX Source code. :D
library project1;
{$mode objfpc}{$H+}
uses
Classes, BGRAGraphics, BGRABitmap, BGRABitmapTypes, Math;
procedure DrawSomething(ACanvas: TCanvas); stdcall;
var
bmp: TBGRABitmap;
begin
bmp := TBGRABitmap.Create(ACanvas.Width, ACanvas.Height);
bmp.Rectangle(Random(10), Random(10), RandomRange(10, 50), RandomRange(10, 50), BGRABlack, BGRAWhite, dmSet);
bmp.Draw(ACanvas, 0, 0);
bmp.Free;
end;
exports
DrawSomething;
begin
end.
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
Windows;
type
TDrawSomething = procedure (ACanvas: TCanvas); stdcall;
{ TForm1 }
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormPaint(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
MyLib: HINST;
DrawSomething: TDrawSomething;
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
function GetPlugin: string;
begin
result := ExtractFilePath(ParamStr(0)) + 'plugins\project1.dll';
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
MyLib := LoadLibrary(PChar(GetPlugin));
if MyLib = 0 then
ShowMessage('Error loading library.')
else
DrawSomething := TDrawSomething(GetProcAddress(MyLib, PChar('DrawSomething')));
if DrawSomething <> nil then
begin
ShowMessage('Library loaded.');
end
else
begin
ShowMessage('Error loading procedure.');
Application.Terminate;
end;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
if FreeLibrary(MyLib) then
ShowMessage('Library freed.');
end;
procedure TForm1.FormPaint(Sender: TObject);
begin
if DrawSomething = nil then
exit;
DrawSomething(Canvas);
end;
end.
Thanks.But why?
MyLib: HINST;
MyLib: TLibHandle;
{$IFDEF windows}stdcall;{$ELSE}cdecl;{$ENDIF}
In the video there is a delay in mouse hover on buttons,why?
I think putting the class in thread will be enough .
About MacOS maybe Circular can help.
I think putting the class in thread will be enough .
About MacOS maybe Circular can help.
He doesn't have a Mac. A virtual machine with a Mac system is not as easy to create too.
So lets make an application or library on BGRABitmap and buy him one as a gift :D
I dont know,may things :P we can talk about it if you want ;)So lets make an application or library on BGRABitmap and buy him one as a gift :D
It's a good idea. What we can do?
Well, this must be something that can be sold, right?:D all humans can change :D
I just make free software, so I have no idea :D
@aradeonas: about time, currently I don't have much free time.Normaly I should be sad when find out this but Im going to check your demo so Im not so much ;) but please consider this,maybe we can do something good.
Doh! I was away on holiday and then for work - did I miss the deadline?Yes but prepare for the next one ;)
Congrats aradeonas, well UI, it get into real applications so no one can beat that.Thank you ;)
Nice trophee, did you do that with laz paint ?Partially. I've tweaked a trophee image to add "UI" and "aradeonas" on it. Original credit for the trophee goes to Dan Prihoi:
Doh! I was away on holiday and then for work - did I miss the deadline?You did not really miss the end of the contest. The official end date is 17/08/2015. So you have two days left to post your art piece.
Well I was planning a UI entry rather than a demo, so maybe I'll hold off til next time :)At least you can vote ;)
Next time I'll do just UI graphics :)Good idea.
Maybe it will be an idea for future contest to make one not only about using BGRABitmap, but a global lazarus graphics contest? In the graphics forum and using any library, I think more people will join, of course we need more help to organize this and it gets really bigger enough.
Lainz I like your previous comment about using any library, maybe we can see others including Graeme, I like his works.
dose the contest open for other graphic libs ?
Very good :D
I'm coming :D
2 month time? I dont know what to do with this much time :D :P
Lainz do you want to do UI this time or something else or both?
Circular take easy on me and please help me on that blur thing :D
What's about that blur thing?!It's a secret between me and Circular :D