@@ -101,18 +101,18 @@ inline void camera() { if(::Processing::PApple
101101inline void camera (float ex,float ey,float ez,float cx,float cy,float cz,float ux,float uy,float uz){ if (::Processing::PApplet::g_papplet) ::Processing::PApplet::g_papplet->camera (ex,ey,ez,cx,cy,cz,ux,uy,uz); }
102102inline void perspective () { if (::Processing::PApplet::g_papplet) ::Processing::PApplet::g_papplet->perspective (); }
103103inline void ortho () { if (::Processing::PApplet::g_papplet) ::Processing::PApplet::g_papplet->ortho (); }
104- inline void text (const std::string& s,float x,float y) { if (::Processing::PApplet::g_papplet) ::Processing::PApplet::g_papplet->text (s,x,y); }
104+ inline void text (const :: std::string& s,float x,float y) { if (::Processing::PApplet::g_papplet) ::Processing::PApplet::g_papplet->text (s,x,y); }
105105inline void text (int v,float x,float y) { if (::Processing::PApplet::g_papplet) ::Processing::PApplet::g_papplet->text (v,x,y); }
106106inline void text (float v,float x,float y) { if (::Processing::PApplet::g_papplet) ::Processing::PApplet::g_papplet->text (v,x,y); }
107107inline void textSize (float s) { if (::Processing::PApplet::g_papplet) ::Processing::PApplet::g_papplet->textSize (s); }
108108inline void textAlign (int a,int b=-1 ) { if (::Processing::PApplet::g_papplet) ::Processing::PApplet::g_papplet->textAlign (a,b); }
109109inline void textLeading (float l) { if (::Processing::PApplet::g_papplet) ::Processing::PApplet::g_papplet->textLeading (l); }
110- inline float textWidth (const std::string& s) { return ::Processing::PApplet::g_papplet ? ::Processing::PApplet::g_papplet->textWidth (s) : 0 ; }
110+ inline float textWidth (const :: std::string& s) { return ::Processing::PApplet::g_papplet ? ::Processing::PApplet::g_papplet->textWidth (s) : 0 ; }
111111inline void loadPixels () { if (::Processing::PApplet::g_papplet) ::Processing::PApplet::g_papplet->loadPixels (); }
112112inline void updatePixels () { if (::Processing::PApplet::g_papplet) ::Processing::PApplet::g_papplet->updatePixels (); }
113- inline void save (const std::string& f=" " ) { if (::Processing::PApplet::g_papplet) ::Processing::PApplet::g_papplet->save (f); }
114- inline void saveFrame (const std::string& f=" frame-####.png" ){ if (::Processing::PApplet::g_papplet) ::Processing::PApplet::g_papplet->saveFrame (f); }
115- inline PImage* loadImage (const std::string& p) { return ::Processing::PApplet::g_papplet ? ::Processing::PApplet::g_papplet->loadImage (p) : nullptr ; }
113+ inline void save (const :: std::string& f=" " ) { if (::Processing::PApplet::g_papplet) ::Processing::PApplet::g_papplet->save (f); }
114+ inline void saveFrame (const :: std::string& f=" frame-####.png" ){ if (::Processing::PApplet::g_papplet) ::Processing::PApplet::g_papplet->saveFrame (f); }
115+ inline PImage* loadImage (const :: std::string& p) { return ::Processing::PApplet::g_papplet ? ::Processing::PApplet::g_papplet->loadImage (p) : nullptr ; }
116116inline PImage* createImage (int w,int h,int m=1 ) { return ::Processing::PApplet::g_papplet ? ::Processing::PApplet::g_papplet->createImage (w,h,m) : nullptr ; }
117117inline PGraphics* createGraphics (int w,int h) { return ::Processing::PApplet::g_papplet ? ::Processing::PApplet::g_papplet->createGraphics (w,h) : nullptr ; }
118118inline void image (PImage* img,float x,float y) { if (::Processing::PApplet::g_papplet) ::Processing::PApplet::g_papplet->image (img,x,y); }
@@ -160,8 +160,8 @@ inline void textureMode(int m) { if(::Processing::PApple
160160inline void textureWrap (int m) { if (::Processing::PApplet::g_papplet) ::Processing::PApplet::g_papplet->textureWrap (m); }
161161inline void clip (float x,float y,float w,float h) { if (::Processing::PApplet::g_papplet) ::Processing::PApplet::g_papplet->clip (x,y,w,h); }
162162inline void noClip () { if (::Processing::PApplet::g_papplet) ::Processing::PApplet::g_papplet->noClip (); }
163- inline void windowTitle (const std::string& t) { if (::Processing::PApplet::g_papplet) ::Processing::PApplet::g_papplet->windowTitle (t); }
164- inline PFont loadFont (const std::string& f) { static PFont d; return ::Processing::PApplet::g_papplet ? ::Processing::PApplet::g_papplet->loadFont (f) : d; }
163+ inline void windowTitle (const :: std::string& t) { if (::Processing::PApplet::g_papplet) ::Processing::PApplet::g_papplet->windowTitle (t); }
164+ inline PFont loadFont (const :: std::string& f) { static PFont d; return ::Processing::PApplet::g_papplet ? ::Processing::PApplet::g_papplet->loadFont (f) : d; }
165165inline void textFont (const PFont& f) { if (::Processing::PApplet::g_papplet) ::Processing::PApplet::g_papplet->textFont (f); }
166166inline void textFont (const PFont& f,float s) { if (::Processing::PApplet::g_papplet) ::Processing::PApplet::g_papplet->textFont (f,s); }
167167inline void set (int x,int y,color c) { if (::Processing::PApplet::g_papplet) ::Processing::PApplet::g_papplet->set (x,y,c); }
@@ -183,4 +183,23 @@ inline void exit_sketch() { if(::Processing::PApple
183183//
184184// For now we define them since most sketches need width/height as globals.
185185// PImage members can be accessed via the struct directly: (*img).height
186- // or by temporarily undefining: #undef height ...
186+ // or by temporarily undefining: #undef height ...
187+ // ── Environment variable accessors ───────────────────────────────────────────
188+ // These let user-defined classes (not inheriting _PSketch) access Processing
189+ // environment variables. Inside _PSketch, member variables shadow these.
190+ // Outside (hoisted classes), these resolve via g_papplet singleton.
191+ inline int width () { return ::Processing::PApplet::g_papplet ? ::Processing::PApplet::g_papplet->logicalW : 0 ; }
192+ inline int height () { return ::Processing::PApplet::g_papplet ? ::Processing::PApplet::g_papplet->logicalH : 0 ; }
193+ inline float mouseX () { return ::Processing::PApplet::g_papplet ? ::Processing::PApplet::g_papplet->mouseX : 0 .f ; }
194+ inline float mouseY () { return ::Processing::PApplet::g_papplet ? ::Processing::PApplet::g_papplet->mouseY : 0 .f ; }
195+ inline float pmouseX () { return ::Processing::PApplet::g_papplet ? ::Processing::PApplet::g_papplet->pmouseX : 0 .f ; }
196+ inline float pmouseY () { return ::Processing::PApplet::g_papplet ? ::Processing::PApplet::g_papplet->pmouseY : 0 .f ; }
197+ inline int frameCount () { return ::Processing::PApplet::g_papplet ? ::Processing::PApplet::g_papplet->frameCount : 0 ; }
198+ inline char key () { return ::Processing::PApplet::g_papplet ? (char )::Processing::PApplet::g_papplet->key : 0 ; }
199+ inline int keyCode () { return ::Processing::PApplet::g_papplet ? ::Processing::PApplet::g_papplet->keyCode : 0 ; }
200+ inline int mouseButton () { return ::Processing::PApplet::g_papplet ? ::Processing::PApplet::g_papplet->mouseButton : 0 ; }
201+ inline bool mousePressed () { return ::Processing::PApplet::g_papplet ? ::Processing::PApplet::g_papplet->_mousePressed : false ; }
202+ inline bool keyPressed () { return ::Processing::PApplet::g_papplet ? ::Processing::PApplet::g_papplet->_keyPressed : false ; }
203+ inline float frameRate () { return ::Processing::PApplet::g_papplet ? ::Processing::PApplet::g_papplet->_frameRate : 0 .f ; }
204+ inline float mouseDX () { return ::Processing::PApplet::g_papplet ? ::Processing::PApplet::g_papplet->mouseDX : 0 .f ; }
205+ inline float mouseDY () { return ::Processing::PApplet::g_papplet ? ::Processing::PApplet::g_papplet->mouseDY : 0 .f ; }
0 commit comments