PT-Framework

Präsentation und Organisation von eigenen Projekten
Benutzeravatar
Patrick_C64
Beiträge: 66
Registriert: Di Okt 18, 2011 5:29 pm
Kontaktdaten:

PT-Framework

Beitrag von Patrick_C64 » So Okt 23, 2011 11:42 am

Hi,

Ich wollte mal ein paar kleine Samples zeigen die mit meinem Framework entstanden sind, um vllt. den ein oder anderen Neugierieg zu machen :).

Es handelt sich um ein Framework welches in C geschrieben ist und dem Programmierer ein Werkzeug sein soll mit dem er schnell und möglichst unkompliziert seine Ziele erreichen kann.

Unterstützen wird, und einiges tut es Bereits ......

:arrow: Windows / Linux (Crossplattform)
:arrow: Mouse/Key/Window Events
:arrow: Grafik /OpenGL
+2D (3D geplant)
+kann zur zeit nur png laden!
:arrow: 2D Engine (WIP)
:arrow: Audio /OpenAL
:arrow: Netzwerk
+UDP
+TCP
+geplant weitere (BT,IRDA, IPC)
:arrow: Hashtables
:arrow: double Linkedlist

.... ma schaun was sich noch ergibt.


Es ist noch absolut Alpha hat noch etliche (behebare) Compilerwarnung hier und da sicher den ein oder anderen Logik und Denkfehler und im Prinzip da ich alleine stehe ist es mitlerweile eine Riesiege Baustelle :) mit 101 Files in 30 Ordnern.

Nichts desto trotz kann man schon ein Wenig Produktiv damit sein. Schaut euch doch mal die Samples an, hab auch Source Code dabei gepackt der kaum Dokumentiert ist aber sich durch die Bezeichner rel. leicht Interpretieren lässt.

Da wo momentan noch viel gecastet werden muss von Void* nach Type und andere nicht so "schöne" Sachen werden ggf. Später noch in einem Macroset vereinfacht zur Verfügung gestellt.

Da wo C - Compiler Installiert sind sollte es laufen, hatte letztens zwei Libs aus meinem Compilersettings geworfen und mir fallen die nich mehr ein (cstdlib und noch eine glaub ich). Hab die Samples jetz auch alle so compiliert, bei wem es ne Fehlermeldung der fehlenden libs wegen gibt bitte mal melden und mir die Libs sagen die verlangt werden. (Thx)

Schaut euch ggf. auch den Source an vllt. findet es ihr ja gut oder habt halöt Kritik und Anregungen oder seid gart drann Interresiert damit ein wenig zu Experimentieren, dann werde ich mal alles nötige zusammenschnürren und zur Verfügung stellen sobald die gröbsten Fouxpas beseitigt sind :mrgreen: .

Würde mich sehr über Feedback freuen!

Zu den Samples,

Netzwerksamples sollten mehfach gestartet werden diese werden dann eine Session hosten oder joinen !!
(UPDChat, und NetworkSessions)

Alles was da zu sehen ist läuft ohne änderungen am Source 1:1 auf Win und Linux (bis auf ein paar kleinigkeiten zb. Font )

Scene2D lässt sich Zoomen und Rotieren, per mousebutton und mousemove! Tile und Objectpick funzzen auch!

Apropos Font, is auf Windows momentan nich so 100% fertig!

Sry, keine Screens schauts euch einfach in Action an!

http://www.c64.feuerware.com/prototype/PT_SAMPLES.rar

mfg. und n schön Sonntag noch!

Benutzeravatar
Patrick_C64
Beiträge: 66
Registriert: Di Okt 18, 2011 5:29 pm
Kontaktdaten:

Re: PT-Framework

Beitrag von Patrick_C64 » Di Dez 06, 2011 6:22 pm

Moin,

man man man wat ein Feedback :)

im moment sitze Ich gerade an einer GUI welche mit Hilfe das Frameworks gerendert wird.

Die GUI selber wird auch Bestandteil des Frameworks.

OpenAL ist auch soweit drinnen!

Zudem hab ich schon erste Versuche gestartet was VOIP angeht, audioaufnahmen sind bereits möglich!

Naja wenn die GUI soweit läuft werde ich mal nen IRC Clienten mit dem Framework aufsetzen.

Wollt aber doch mal ein Screen Posten, um vllt. doch ein wenig Interesse zu wecken!

Das Framework wäre zu testzecken als Statischelibrary verfügbar für Linux und Windows und ist somit auch ohne weiteres in C++ nutzbar ;) .

Alle geplanten Features bis auf Gamepadsupport, BinaryTrees, Bluetooth, IPC und IrDA sind soweit drinnen, alles noch recht wacklig aber zumindest eine Basis mit der man arbeiten kann! Ich schätze bis da alles 100% ist wirds wohl noch was dauern, und wenn das fertig ist gibbet noch ne 3D-Engine zu implementieren.

Bis dahin werde ich hier mal dann und wann was zum Projekt Posten!

Ahso ja und wie geahnt libgcc****.dll fehlt bei den Samples im ersten Post, aber is ja auch nur für Leute die ehh Compiler aufm Rechner haben!

Bild

mfg. Patrick

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: PT-Framework

Beitrag von Xin » Di Dez 06, 2011 6:59 pm

Ich gebe mal kurz ein Feedback:

Man erhält meistens kein Feedback, weil das Projekt entweder unbedeutend ist oder so aufwendig, dass zeitmangelgeplagte Menschen nicht dazu kommen, wirklich ein Auge darauf zu werfen.

In Deinem Fall würde ich mir das gerne genauer ansehen, aber mir fehlt die Zeit. Mitte Dezember gehe ich in Urlaub und dann kann man sich gerne mal zusammen hinsetzen und fachsimpeln, bis dahin gehe ich jetzt offline und bin vermutlich erst wieder online, wenn ich morgen früh auf der Arbeit ankomme.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
Patrick_C64
Beiträge: 66
Registriert: Di Okt 18, 2011 5:29 pm
Kontaktdaten:

Re: PT-Framework

Beitrag von Patrick_C64 » Mo Jan 09, 2012 6:10 pm

Moin,

so habs geschafft eine Prealpha hochzuladen, der Source ist so gut wie nicht dokumentiert aber dafür habe ich versucht die Functoren und Variablen Sinngemäß zu bennenen. Ob alles seine Richtigkeit hat sei mal dahingestellt und Bugfrei ist es auf jeden Fall auch nicht. Aber es funktioniert einiges und ich habe eine Basis für ein ordentliches Framework und viel gelernt. Aber ab diesem Punkt möchte ich meine Arbeit gerne teilen und suche noch nach ein Paar Leuten die vllt. Lust haben da mitzufrickeln, was mich nicht zuletzt zu einer Ordentlichen Doku zwingen würde und einen Erfahrungsaustausch mit sich bringen würde, nein ich denke das würde der Sache wieder schwung und Spass verleihen denn irgentiwe bin ich momentan am Nullpunkt.

Zwar frickel ich an der Gui rum aber naja so wirklich gut vorran gehts momentan nich.

Naja schauts euch an, zerreist mich nicht für gegen Konvention verstoßende Programmierung und momentane Fehler im Alignment der Structs etc. ist ja alles noch Prealpha auch wenn ich schon ein wenig am Optimieren bin.

Die eigtl. Frage wäre ist das Lib einfach zu benutzen oder was kann man, bzw. sollte man verbessern etc. alles innen drinnen sollte erstmal als Blackbox betrachtet werden, ausser du möchtest mithelfen und hast deswegen verbindliche produktive Vorschläge dann ist das Blackboxgebot für dich aufgehoben ;).

http://www.c64.feuerware.com/page/viewt ... p?p=79#p79

Naja man kann nur voneinander lernen also mitmachen tut nich weh :mrgreen:
-------------------------------------------------------------------------
OT: Designfrage zur GUI, das macht mich noch kirre deswegen koller ich mich mal eben hier aus :) .

Bei der GUI bin ich einfach nur am Überlegen ob ich "Eventcallbacks" als Eventcallbacks intern(Core) sowie Extern(an die App zurpckgegeben) als Eventcallback realisiere welches das Event als Pointer im Callback mit übergibt. Oder ob ich zwei seperate Unterscheidungen mache, einmal als Eventhandler Intern mit einer Reference auf und für was auch immer also n void*, so das das Widget einfach nur gesagt bekommt bei Event XY rufe Functor AB mit Parameter 123 oder "abc" auf, was Intern soweit klappen würde/tut da weitere erforderliche Infos nicht zum eigtl. Event gehören sondern diese von Sender geholt werden.

Als Eventhandler:
Zb. Scrollbar scrollt, puscht event an seinen Parent zb. WIDGET_MUST_SYNC und das Parent synct mit der Scrollbar, Eventparameter sind nicht notwendig, noch nichtmal eine value oder so.

Aber wenn ich in der App zb ein Keyhit einer Textbox prüfen welcher per Callback aufgerufen wird, bekomme ich das halt nicht auf diese Weise ich kann dem Callback nur bei Initialisierung ein Value mitgeben. Da wärs besser das Event wird als Parameter dem Functor "Callback" beim aufruf übergeben.

Also mach ich nun ein pt_widgets_event_handler_t und ein pt_widgets_event_callback_t oder einfach nur ein pt_widgets_event_callback_t der dann für die App als Hook und für die Lib als Callback eingerichtet/registriert wird oder wie oder was .....

Ja ja nich einfach aber ich denke ich werde das schon wuppen das ist nur eine Frage des Geschmacls aber vllt. hat da ja wer Anregungen, momentan hab ich es soweit umgeschrieben das ich meine Idee mit dem EventHandler drinne habe, bin aber damit doch nicht so zufrieden wie mit dem Callback vorher. :)

mfg. Patrick

Benutzeravatar
Patrick_C64
Beiträge: 66
Registriert: Di Okt 18, 2011 5:29 pm
Kontaktdaten:

Re: PT-Framework

Beitrag von Patrick_C64 » Do Mär 01, 2012 3:22 pm

Hi,

so hab ein wenig was gemacht, viele Compilerwarnings und Bugs (in v0.02a ist auch hochgeladen) behoben. Leider geht es in letzter Zeit nicht mehr so gut vorran, zum einem stecke ich in Prüfungsvorbereitungen und Lernstress, und zum anderem mangelt es einfach an eigenen Ideen für Projekte die man mit dem PT-Framework (Graphic/Sound) erstellen könnte.

Naja und Feedback fehlt natürlich.

Naja ok wollte einfach mal nur eine kleine Spielerei zeigen was nun möglich ist, und einfach mal wieder ein wenig aufmerksam auf das PT-Framework machen.

Diese Demo läuft nur unter WIN32, auch sind die Features noch nicht in der V0.02a enthalten, aber ich werde ma schauen ob ich zum WE die neue Version (0.03a) hochlade, wenn es jemand möchte.

Zur Demo:

2 Unabhängige Fenster, werden als Augen "Missbraucht", ja sind nur gezeichnete Primitive, also sieht aus wie Augen mit Paint gezeichnet *GRINS (mit Fotorealistischen Material wird das bestimmt ganz :cool: kommen )! Die Pupillen verfolgen die Maus (muss aber noch was feintunen!!!), ist so ähnlich wie das Augenwidget von Linux.

Die Augen können verschoben werden, einfach eines Anklicken und dann Spacetaste gedrückt halten, dabei Augen positionieren mit der Mouse.

Fehlt noch das die Fenster automatisch im Vordergrund bleiben, aber hmm erstmal nicht sooo wichtig und ist ehh nur eine Spielerei! Soll ja nur eine "Techdemo" sein.

Aber man kann sich auch eine schöne Analog-Desktopuhr Programmieren etc. Alpha wird auch für Fenster unterstützt ;) (evtl. auch bald Layered-Windows?)!

mfg. Patrick_C64

Hier eine Binary zum Download und der Source dazu.

Code: Alles auswählen

#include "environment.h"

void Environment () {

  // create array for our graphics
  pt_graphics_t *MyGraphics[2];

  // define some vars
  int winwidth  = 100;
  int winheight =  70;
  double dtime  = 1.0f;

  int win;
  int APPEXIT = false;

  // create graphics 1
  if ( PT_SUCCES != pt_graphics_New (&MyGraphics[0], "eye L", winwidth, winheight,32,PT_GRAPHICS_OVALWINDOW
                                                                               |PT_GRAPHICS_POPUP     )
     )
  return PT_ERROR;

  // create graphics 2
  if ( PT_SUCCES != pt_graphics_New (&MyGraphics[1], "eye R", winwidth, winheight,32,PT_GRAPHICS_OVALWINDOW
                                                                               |PT_GRAPHICS_POPUP     )
    )
  return PT_ERROR;


  // adjust graphics (eye) position
  pt_window_SetPosition( MyGraphics[0]->pt_window,        0,0);
  pt_window_SetPosition( MyGraphics[1]->pt_window, winwidth,0);


  // set cls color for both graphics
  for (win=0;win<2;win++)
  { if (PT_SUCCES==pt_graphics_SetTarget (MyGraphics[win]))
    {
        pt_graphics_SetClsColor (225,225,235);
    }
  }

  // var for eyeopen value
  double eopen=winheight * 2;

  // last eye close
  int lclose=pt_utils_Millisecs();

  // state 0 = open, 1 = close
  int state=0;

  // we need it to control wether the spacekey is down
  int setpos=false;

  // it's only to play a round :) and in this case has it no effects
  int tired=0;

  // the APP loop
  while (APPEXIT == false )
  {
    // Check and Update Values and states
    if (state==0)
    eopen-=1.0*(winheight*.01)*dtime;
    else
    eopen+=2.0*(winheight*.01)*dtime;

    if (eopen< (winheight*.3)+tired)eopen=winheight*.3 + tired;
    if (eopen>winheight*1.5)state=0;


    // get Deltatime for 100 frames per Second ( i think it is buggy for the moment!)
    pt_utils_dtime(100,&dtime);


    // random eyeclose
    if(rand()*1< 5)
    if (state==0) {
          state=1;
          lclose=pt_utils_Millisecs();

      }

    // eyeclose after 4000 millisecs
    if(pt_utils_Millisecs()-lclose>4000)
    { if (state==0) {
          state=1;
          lclose=pt_utils_Millisecs();
          //tired+=25;
      }
    }

    // Get Global Mouseposition (not implemented in PT-Framework at the moment!)
    POINT gmouse;
    GetCursorPos(&gmouse);

    // save position to gmx and gmy
    int gmx=gmouse.x;
    int gmy=gmouse.y;

    // set graphics (eye) position
    if (setpos==true) {
    pt_window_SetPosition( MyGraphics[0]->pt_window,gmx-winwidth,gmy-winheight/2);
    pt_window_SetPosition( MyGraphics[1]->pt_window,gmx         ,gmy-winheight/2);
    }

    // setpos to false, if keyspace is down setpos would be set to true
    setpos=false;
    int wx,wy;


    // the graphics loop for each ceated window
    for (win=0;win<2;win++)
    {
      // set our Graphics(Window) as Target if succes do the other stuff
      if (PT_SUCCES==pt_graphics_SetTarget (MyGraphics[win]))
      {

      // clear the screen
      pt_graphics_Cls();

      // get the window position to calculate distance and angle between mousecoords
      pt_window_GetPosition( MyGraphics[win]->pt_window, &wx,&wy );

        /// some MATH ///////////////
        ///

        int px1=wx;
        int py1=wy;

        pt_vector2d_t v1;
        pt_vector2d_t v2;

        v1.coords[0]=wx+winwidth/2;
        v1.coords[1]=wy+winheight/2;

        v2.coords[0]=gmx;
        v2.coords[1]=gmy;

        pt_float dist = pt_vector2d_Distance ( v1,v2);
        pt_float angl = pt_vector2d_Angle    ( v1,v2);

        dist*=.66;
        if (dist>winwidth/4)dist=winwidth/4;

        pt_float eyex = -sin( angl)*dist;
        pt_float eyey = -cos( angl)*dist;

        eyex+=winwidth /2;
        eyey+=winheight/2 + winheight*.2;

        ///
        /// ///////////////////////////////////////////////////

      // Each graphics/window has own events !!

      // Check Key-Space
      if ( MyGraphics[win]->pt_window->closeevent
      || pt_graphics_StateKey (32) )
      setpos=true;

      // Check Key-Escape
      if ( MyGraphics[win]->pt_window->closeevent
      || pt_graphics_StateKey (27) )
      APPEXIT = true;

      // draw the stuff
      pt_graphics_SetColor (0,0,200);
      pt_graphics_DrawOval (eyex, eyey,winwidth/3,winwidth/3);

      pt_graphics_SetColor (0,0,00);
      pt_graphics_DrawOval (eyex,eyey,winwidth/8,winwidth/8);

      pt_graphics_SetColor (232,188,87);
      pt_graphics_DrawRect (00,00,winwidth,eopen);

      // flip the stuff from backbuffer to frontbuffer
      pt_graphics_Flip();

      }
    }
  }

  // free/destroy our windows
  pt_graphics_Free (MyGraphics[0]);
  pt_graphics_Free (MyGraphics[1]);

  return PT_SUCCES;

}


canlot
Beiträge: 393
Registriert: Di Mär 08, 2011 11:01 pm
Wohnort: NRW

Re: PT-Framework

Beitrag von canlot » Sa Mär 03, 2012 3:15 pm

Hi ich habe deine Seite als Lesezeichen gespeichert das soll heißen das ich Interesse an deinem Framework habe ^^.
Aber um zu compilieren fehlen mir die libraries von OpenAl und OpenGL und eventuell auch weitere.
Google hat mir nichts passendes geboten du könntest sie aber auf deiner Seite verlinken.
Unwissenheit ist ein Segen

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: PT-Framework

Beitrag von Xin » Sa Mär 03, 2012 3:19 pm

canlot hat geschrieben:Hi ich habe deine Seite als Lesezeichen gespeichert das soll heißen das ich Interesse an deinem Framework habe ^^.
Aber um zu compilieren fehlen mir die libraries von OpenAl und OpenGL und eventuell auch weitere.
Google hat mir nichts passendes geboten du könntest sie aber auf deiner Seite verlinken.
Auf welchem OS?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

canlot
Beiträge: 393
Registriert: Di Mär 08, 2011 11:01 pm
Wohnort: NRW

Re: PT-Framework

Beitrag von canlot » Sa Mär 03, 2012 3:21 pm

Win XP
Unwissenheit ist ein Segen

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: PT-Framework

Beitrag von Xin » Sa Mär 03, 2012 7:01 pm

Grundlegendes OpenGL ist bei WinXP dabei. OpenAL wird wohl weniger unterstützt werden, hier muss man wohl tatsächlich mal auf die Suche nach einem SDK gehen.

khronos.org?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
Patrick_C64
Beiträge: 66
Registriert: Di Okt 18, 2011 5:29 pm
Kontaktdaten:

Re: PT-Framework

Beitrag von Patrick_C64 » Mo Mär 05, 2012 9:00 am

Hi canlot,

habs mal auf meiner Webseite ergänzt, vielen Dank für dein Interesse an meinem Framework :) das motiviert doch.

Hmm dann werde ich mal versuchen diese Woche noch die 0.03a hochzuladen.

OpenAL Downloads,
http://connect.creativelabs.com/openal/ ... Items.aspx

mfg. Patrick

(PS!! ( Projectantrag (phpORM Framework) --> genehmigt ! *Freu!)

Antworten