AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Gesture - ein lernfähiges Mausgesten-Erkennungssystem
Thema durchsuchen
Ansicht
Themen-Optionen

Gesture - ein lernfähiges Mausgesten-Erkennungssystem

Ein Thema von OrallY · begonnen am 28. Jul 2004 · letzter Beitrag vom 2. Aug 2004
Antwort Antwort
Seite 4 von 4   « Erste     234   
Benutzerbild von OrallY
OrallY
Registriert seit: 29. Apr 2003
Gesture (Pre-Alpha Version)

So, nachdem durch einen Systemabsturtz ne Menge Daten verloren gingen, habe ich mich hingesetzt und Gesture noch einmal geschrieben. Und nun ist es wieder auf dem Entwicklungsstand wie das alte.

Was ist Gesture?
Gesture ist ein lernfähiges Mausgesten-Erkennungssystem, was nichts anderes heißt, als dass man dem Programm Gesten beibringen kann, die mit der Maus einfach auf den Bildschirm gezeichnet werden.

Wie benutze ich Gesture?
Wenn das Programm gestartet wird, nistet es sich im SysTray ein. Nun kann mit gedrückter rechter Maustaste irgendwo auf dem Bildschirm eine Geste gemalt werden. Nach loslassen der Taste verschwindet die Geste sofort wieder. Im Kontextmenü des TrayIcons lässt sich mit "Geste speichern" die aktuell gezeichnete Geste speichern. Von nun an sollte Gesture, wenn diese Geste nocheinmal gezeichnet werden, diese auch erkennen (In diesem Falle erscheint die Meldung: "Gesture Found: {Gesten-Index}". Kann keine Geste erkannt, werden erscheint die Meldung: "No Gesture Found." (das ist auch der Fall, wenn noch keine Geste gespeichert wurde).

Was ich mit Gesture noch vorhabe:
Durch die Mausgesten sollen Aktionen ausgeführt werden (wie z.B: öffne Mail-Client etc.). Dabei können Gesten global gelten oder nur auf bestimmte Anwendungen beschränkt werden. Die mögliche Auswahl der Aktion soll durch ein Plugin-System erweiterbar sein. Die Aktionszuweisung soll über ein seperates Programm erfolgen, was ich wahrscheinlich mit Hilfe der VCL schreiben werde.
Auch gefallen würde mir die Aktionen über eine Scriptsprache zu realisieren, allerdings wüsste ich noch nicht, welche dafür in Frage käme... .



Ich habe versucht in den Kommentare so viel zu erklären, wie möglich. Wenn etwas nicht nachvollziehbar ist, einfach nachfragen.

Also, wer Lust hat, kann sich in den Code einarbeiten (wobei ich natürlich helfe, so gut ich kann) und mitprogrammieren, ist ja schließlich OpenSource . Wenn das Programm ersteinmal soweit ist, dass es auch benutzbar ist, werde ich es unter Sourceforge veröffentlichen (http://gesturerec.sourceforge.net).

aktuelle Version:
Gesture 0.0.2 (Pre-Alpha-Version)
Änderungen: Nur Bugfixes
Kompilat: http://prdownloads.sourceforge.net/g...a.zip?download [26KB]
Source: http://prdownloads.sourceforge.net/g...a.zip?download [23KB]

[Edit: 15. Mai 2005]
Hinweis:
Ich wurde vor Kurzem gebeten, eine neue Version von Gesture hier vorzustellen. Da allerdings aus Zeitmangel die Entwicklung nur in periodischen Intervalen vorangeht, wird es wohl noch eine Weile dauern, bis ich die nächste Pre-Alpha veröffentliche.
Bis dahin kann der Interessierte den Fortschritt im CVS Repository verfolgen:
http://cvs.sourceforge.net/viewcvs.py/gesturerec/
.oO'rallY
Linux is like a tipi: no gates, no windows and a gnu-eating apache inside...
 
Benutzerbild von SirThornberry
SirThornberry

 
Delphi 2006 Professional
 
#31
  Alt 28. Jul 2004, 22:02
benutze doch einfach eine Liste (zum Beispiel TList) dann bist du nicht auf 2000 Einträge beschränkt und mitm aufräumen ist eigentlich auch kein Problem
Jens
  Mit Zitat antworten Zitat
Benutzerbild von OrallY
OrallY
 
#32
  Alt 29. Jul 2004, 09:21
Die Idee ist gar nicht so schlecht! Ich denke ich werd mir mal selbst was zusammenhacken. Thx.
  Mit Zitat antworten Zitat
Benutzerbild von OrallY
OrallY
 
#33
  Alt 30. Jul 2004, 14:04
Ich habe ein paar kleine Veränderungen an Gesture vorgenommen. Das wichtigste ist die Einführung einer verketteten Liste, um den Mausweg zu speichern.

Allerings besteht das Problem, dass der Speicher nach dem Zeichnen einer Geste nicht wieder freigegeben wird. Ich weiß nicht, woran das liegt:
Auszug aus GestureList.pas:
Delphi-Quellcode:
{...}
PItem = ^TItem;
  TItem = packed record
    Data: TFloatingPoint;
    Next: PItem;
  end;

procedure TGestureList.Add(APoint: TFloatingPoint; pos: integer = -1);
var
  cur_item, new_item: PItem;
begin
  GetMem(new_item, SizeOf(TItem));

  new_item^.Data := APoint;

  if pos = -1 then
    pos := ItemCount;

  if pos = 0 then begin
    cur_item := StartItem;
    new_item^.next := cur_item;
    StartItem := new_item;
    Inc(ItemCount);
  end
  else
    if pos <= ItemCount then begin
      cur_item := GetItem(pos-1);
      new_item^.next := cur_item^.next;
      cur_item^.next := new_item;
      Inc(ItemCount);
    end else Dispose(new_item);
end;

procedure TGestureList.Delete(Pos: integer);
var
  del_item, cur_item: PItem;
begin    
  if StartItem <> nil then    
    if pos = 0 then begin    
      del_item := StartItem;    
      StartItem := StartItem^.Next;
      Dispose(del_item);
      Dec(ItemCount);
    end else
      if pos < ItemCount then begin    
        cur_item := GetItem(pos-1);
        del_item := cur_item^.Next;
        cur_item^.Next := del_item^.Next;
        Dispose(del_item);
        Dec(ItemCount);    
      end;
end;

procedure TGestureList.DelAllFromItem(var Item: PItem);
begin
  if Item <> nil then begin
    if Item^.Next <> nil then DelAllFromItem(Item^.Next); //Rekursion!
    FreeMem(Item, SizeOf(TItem));
    Item := nil;
  end;
end;
{...}
  Mit Zitat antworten Zitat
Benutzerbild von OrallY
OrallY
 
#34
  Alt 2. Aug 2004, 12:13
Der Speicherbug ist getilgt. Es lag nicht an der genannten Unit sondern an einem vergessenen ReleaseDC in der DesktopDraw.pas. Thx to Memproof und Keldorn@delphi-forum

Gesture 0.0.2 (Pre-Alpha-Version)
Änderungen: Nur Bugfixes
Kompilat: http://prdownloads.sourceforge.net/g...a.zip?download [26KB]
Source: http://prdownloads.sourceforge.net/g...a.zip?download [23KB]
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 4   « Erste     234   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz