Autor Beitrag
Pr0g
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 220


D7 Pers
BeitragVerfasst: Mi 15.06.05 18:13 
Hallo,

ich möchte nun mein neustes Projekt (war wieder für einen Wettbewerb) vorstellen: PQASCIIStudio.

Das Programm soll beim Erstellen von ASCII Arts behilflich sein, in dem es Zeichentools wie Paint anbietet, hier mal ein Screenshot: .png (~21Kb).

Das Programm biete verschiedene Exportfunktionen (HTML, RTF, TXT), sowie ein eigenes Format (.adf). Herzstück des Programms ist der TASCIIDesigner. Diese Komponente stellt die Zeichenfläche, -funktionen und alles weitere wie Exporter zur Verfügung. Dem Programm liegt eine kleine Hilfe bei und der Code ist kommentiert. Für die TASCIIDesigner Komponente liegt noch eine Dokumentation (mit DelphiCodeToDoc erstellt) bei.

Das Programm hat noch nen paar Bugs und einige Funktionen fehlen noch (dazu blieb mir die Zeit nicht). Ich werde es nach Fertigstellung von Webweaver v2 aber noch weiterentwickeln. In der Readme findet ihr nochmal genauere Infos zu den einzelnen Teilen (Programm, Code, ToDo-Liste): .txt (~5Kb).

Für die .adf Dateien gibt es auch noch eine Onlinegalerie (bspw. um die Bilder anderen zu zeigen): adfviewer.pr0g.net. Das PHP Script ist auch OpenSource und liegt dem Download ebenfalls bei.

Hier nun der Download, das ganze ist unter der GPL lizensiert: .zip (~661Kb).

Im Ordner "sample" findet ihr das auf dem Screenshot gezeigte Bild als .adf Datei (zum Laden in das Programm), sowie den verschiedenen Exportformaten.

Feedback wie immer erwünscht ;)


MfG Pr0g


Zuletzt bearbeitet von Pr0g am Mi 15.06.05 18:46, insgesamt 1-mal bearbeitet
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Mi 15.06.05 18:26 
sieht ziemlich geil aus, testen werd ichs sobald ich bedarf habe
glaube aber schon vom screenie her zu sagen können dass es ein top-teil ist :D

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
uall@ogc
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: Mi 15.06.05 18:45 
hab zuerst gedacht der kann schwarzweiß bilder direkt konvertieren, dann wärs geil gewesen.

aber so braucht man das programm net wirklich *duck*

_________________
wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
Pr0g Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 220


D7 Pers
BeitragVerfasst: Mi 15.06.05 18:49 
@retnyg: Danke.

@uall@ogc: Dafür gibt es Bildconverter. Dies ist aber ein Zeichenprogramm zum erstellen von ASCII Arts. Wie in der ToDo Liste zu lesen ist, wird eine Importfunktion für Bilder aber später noch integriert. Die Hauptaufgabe des Programms liegt bei der Erstellung eigener Bilder.
DarkHunter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 477

Win XP
D3 Prof, D2005 PE
BeitragVerfasst: Mi 15.06.05 20:33 
Das ist doch mal ein cooles Programm
Allein auf die Idee zu kommen
gefällt mit richtig gut

aber gibt es eine möglichkeit die bilder zu vergrößern?
Pr0g Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 220


D7 Pers
BeitragVerfasst: Mi 15.06.05 20:44 
user profile iconDarkHunter hat folgendes geschrieben:
Allein auf die Idee zu kommen

Die Idee ASCII Arts mit einem Programm leichter zu erstellen ist nicht von mir. Es war für einen Wettbewerb und gibt ähnliche Programme.


user profile iconDarkHunter hat folgendes geschrieben:
aber gibt es eine möglichkeit die bilder zu vergrößern?

Wie genau meinst du das mit "vergrößern"? Momentan gibt es nichts in dieser Richtung.
DarkHunter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 477

Win XP
D3 Prof, D2005 PE
BeitragVerfasst: Mi 15.06.05 22:25 
Ich meine mit "Vergrößern da auch größere Bilder möglich sind, und nicht nur die voreingestellte feste größe
Pr0g Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 220


D7 Pers
BeitragVerfasst: Mi 15.06.05 22:32 
Geh einfach mal auf "Datei"->"Neu", dann kannst du eine Größe angeben. Und sollte ein Text (aus der Zwischenablage) auch größer sein, als die Designerfläche, so kommt eine Abfrage, ob der Designer abgepasst werden soll (oder der Text abgeschnitten).
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Di 21.06.05 13:43 
finde ich gut, auch dass es dicker wird, wenn man mehrmals drüber geht.
es müsste aber eine Textfunktion geben die Texte so ausgibt:
ausblenden Quelltext
1:
2:
3:
4:
5:
  A  BBB CCC
 A A B B C
 AAA BB  C
 A A B B C
 A A BBB CCC

das wäre lustig, und ne funktion die schwarz/weiß bilder umwandelt, dann ist es perfekt, ansonsten richtig geil, vielleicht noch etwas verbessern, aber auch schon heftig, dass es richtungen erkennt, zwar manchmal zu genau aber schön ! :wink:

ich finde die boxen ja so lustig, wollte da schon ne eigene Komponente draus machen, aber gab son paar Fehler, dann hatte ich kein Bock mehr, ne Procedure geschrieben, mal geguckt, wie Pr0g das gemacht hat, ich hatte viele schleifen drin, weil ich stringofchar (sehr praktisch) nicht kannte und hab halt ne Procedure draus gemacht, die man für jedes MemoFeld einsetzen kann:
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
procedure CreateTextBox(Memo: TMemo; Txt: TStrings; EdgeChar, FrameChar, SideFrameChar: char);
var
  i, max: Integer;
  str, frame: String;
begin
  max := 0;
  //Alles aufs Memo beziehen
  with Memo do
    begin
      //Schriftart setzen
      font.Name := 'fixedsys'
      //Länge der längsten Zeile ermitteln
      for i := 0 to Txt.Count - 1 do
        if Length(Txt[i]) > max then
          max := Length(Txt[i]);
      //Update beginnen
      Lines.BeginUpdate;
      //Vorher alles löschen
      Lines.Clear;
      //Oberen und unteren Rahmen festlegen
      Frame := EdgeChar + StringOfChar(FrameChar, max + 2) + EdgeChar;
      //Oberen Rahmen setzen
      Lines.Add(Frame);
      //Textzeilen bearbeiten und einfügen
      for i := 0 to Txt.Count - 1 do
        begin
          str := Txt[i];
          if Length(str) < max then
            str := str + StringOfChar(' ', max - Length(str));
          str := SideFrameChar + ' ' + str + ' ' + SideFrameChar;
          Lines.Add(str);
        end;
      //Unteren Rahmen setzen
      Lines.Add(frame);
      //Update beenden
      Lines.EndUpdate;
    end;  
end;

Beispielaufruf
ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.Memo2Change(Sender: TObject);
begin
  CreateTextBox(Memo1, Memo2.lines, '+''-''|');
end;

:mrgreen:

vielleicht mach ich noch eine wo man den text zentriert anzeigen lassen kann und rechtsbündig, ich glaube das ist ganz nützlich :P
Pr0g Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 220


D7 Pers
BeitragVerfasst: Di 21.06.05 17:17 
Textfunktion: Support für FiGlet Schriften wäre später noch machbar. Der Vorteil dabei ist, dass es schon eine ganze Menge Fonts gibt und diese auch etwas Variable sind:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
 _____ _       _      _
|  ___(_) __ _| | ___| |_
| |_  | |/ _` | |/ _ \ __|
|  _| | | (_| | |  __/ |_
|_|   |_|\__, |_|\___|\__|
         |___/

Wie hier zu sehen ist, geht das "t" in das "e", solche Überschneidungsstücke werden für jeden Buchstaben in der Font angegeben. Jedoch dürfte es nicht wenig Arbeit sein, das FiGlet System zu integrieren.

Schwarz-/Weißbilder nach ASCII: Es ist ein allgemeiner Bildimporter geplant, der auch farbige Bilder durch verschiedenen Algorythmen umwandeln kann.


Momentan habe bin ich noch mit Webweaver beschäftigt. Denke in ein paar Wochen finde ich Zeit für eine Teil-Weiterentwicklung.
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Di 21.06.05 17:38 
wie wäre es mit einer eigenen schrift schnittstelle, sollte doch nicht so schwierig sein, man kann neue buchstaben (mit deinem programm) erstellen und diese dann in eine Font Datei Speichern, diese wird dann im programm eigenen Font Ordner geschpeichert und ist dann mit ner Font-Kombobox auswählbar, dann kannst du die einzelnen buchstaben ja zeile für zeile nebeneinander klatschen (ähnlich wie mit den boxen) das sollte dann eigentlich recht einfach werden :wink:

ok buchstaben die sich nicht in ein Quadrat packen lassen, weil die einzelnen buchstaben dicht aneinander oder ineinander sein müssen, werden schwierig werden :lol:

ich mach gerade einen ReadMe Datei Creator, um so simple TXT Dateien Grafisch aufzupeppen, sowas wie dein "paint" werde ich wohl nicht einbauen, dann müssen die schon dein Tool runterladen, aber Überschriften, Boxen und Listen einfacher zu erstellen ist doch auch fein :D

ach ja: sonne paint farbleiste unten fehlt noch, sodass man 2 farben wählen kann, und n radierer :!:
Pr0g Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 220


D7 Pers
BeitragVerfasst: Di 21.06.05 18:49 
Wegen den Schriften werden ich mir noch ein System ausdenken.

Momentan gibt es keine Hintergrundfarbe für die einzelnen Felder (warum auch), daher reicht eine Farbe IMHO :roll:

Radierer kommt ja auch noch:
readme.txt hat folgendes geschrieben:
[...]
Folgende Features
könnte ich mir für die Zukunft aber noch vorstellen:

- komplette Unterstüzung für Rückgängig und Wiederrufen
- Umwandeln mehrerer .txt in .adf Dateien
- Exporter für JS Animationen
- Importer für Grafiken
- .adf Dateien mit dem Programm verknüpfen
- ClipArt Gallerie
- weitere Modi (bspw. Radiergummi, Füllen...)
- Erweiterung der Pixelerkennung
- Diagramm-Generator
- (Pluginschnittstelle)
- überarbeitetes Design der Hilfe^^
[...]
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Di 21.06.05 19:22 
Undo Redo fehlt auch noch ! 8)
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Mi 14.12.05 16:09 
gibts schon wieder was neues, bin total auf den Bildimporter gespannt :!:
Pr0g Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 220


D7 Pers
BeitragVerfasst: Mo 19.12.05 18:34 
Nein, ich hatte noch keine Zeit dafür, da der ASCII Designer nur ein Nebenprojekt ist (welches ich aber nicht vergesse). Doch es könnte noch etwas dauern, (vielleicht auch ein halbes Jahr...kA) bis ich mit bestimmten anderen Projekten an einem Punkt angelangt bin an dem ich sagen kann, dass die Projekte nun laufen und ich mich dem ASCII Designer widmen kann. Habe leider seit der Arbeit nicht mehr so viel Zeit wie früher bei der Schule ;)
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Mo 19.12.05 18:39 
oder du gibst den source frei 8)
Pr0g Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 220


D7 Pers
BeitragVerfasst: So 25.12.05 02:50 
user profile iconF34r0fTh3D4rk hat folgendes geschrieben:
oder du gibst den source frei 8)

Du hast dir das Projekt aber mal angesehen, oder? Dies hier ist die Sparte für "Open Source Projekte" und im ersten Post von mir steht:
Pr0g hat folgendes geschrieben:
Hier nun der Download, das ganze ist unter der GPL lizensiert: .zip (~661Kb).


Der Download enthält:
  • Executable
  • Beispiele
  • Source
  • Dokumentation
  • PHP Source der Onlinegalerie


Was willst du mehr :roll:
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: So 25.12.05 13:11 
ups, hatte ich ja ganz vergessen ^^ hab mir ja auch den source schon angesehen, sorry ;)

siehe meinen post:
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
procedure CreateTextBox(Memo: TMemo; Txt: TStrings; EdgeChar, FrameChar, SideFrameChar: char);
var
  i, max: Integer;
  str, frame: String;
begin
  max := 0;
  //Alles aufs Memo beziehen
  with Memo do
    begin
      //Schriftart setzen
      font.Name := 'fixedsys'
      //Länge der längsten Zeile ermitteln
      for i := 0 to Txt.Count - 1 do
        if Length(Txt[i]) > max then
          max := Length(Txt[i]);
      //Update beginnen
      Lines.BeginUpdate;
      //Vorher alles löschen
      Lines.Clear;
      //Oberen und unteren Rahmen festlegen
      Frame := EdgeChar + StringOfChar(FrameChar, max + 2) + EdgeChar;
      //Oberen Rahmen setzen
      Lines.Add(Frame);
      //Textzeilen bearbeiten und einfügen
      for i := 0 to Txt.Count - 1 do
        begin
          str := Txt[i];
          if Length(str) < max then
            str := str + StringOfChar(' ', max - Length(str));
          str := SideFrameChar + ' ' + str + ' ' + SideFrameChar;
          Lines.Add(str);
        end;
      //Unteren Rahmen setzen
      Lines.Add(frame);
      //Update beenden
      Lines.EndUpdate;
    end;  
end

^^ war wohl nicht ganz bei mir :P