31#include "../base/Variant.h"
32#include "../base/PList.h"
33#include "../base/PComplexData.h"
36#include "../base/Evaluator-es.h"
37#include "../devices/PEventLoop-es.h"
38#include <emscripten.h>
40#include "../base/Evaluator.h"
41#include "../devices/PEventLoop.h"
47#include "../base/PEBLObject.h"
48#include "../devices/PEyeTracker.h"
50#include "../devices/DeviceState.h"
54#include "../objects/PColor.h"
55#include "../objects/PTextBox.h"
56#include "../objects/PDrawObject.h"
57#include "../objects/PCustomObject.h"
58#include "../utility/PError.h"
59#include "../utility/PEBLUtility.h"
60#include "../utility/Defs.h"
63#include "../platforms/validator/PlatformEnvironment.h"
64#include "../platforms/validator/PlatformWindow.h"
65#include "../platforms/validator/PlatformImageBox.h"
66#include "../platforms/validator/PlatformDrawObject.h"
67#include "../platforms/validator/PlatformLabel.h"
68#include "../platforms/validator/PlatformFont.h"
69#include "../platforms/validator/PlatformEventQueue.h"
70#include "../platforms/validator/PlatformTextBox.h"
71#include "../platforms/validator/PlatformCanvas.h"
72#include "../platforms/validator/PlatformAudioOut.h"
74#include "../platforms/sdl/PlatformEnvironment.h"
75#include "../platforms/sdl/PlatformWindow.h"
76#include "../platforms/sdl/PlatformImageBox.h"
77#include "../platforms/sdl/PlatformDrawObject.h"
78#include "../platforms/sdl/PlatformLabel.h"
79#include "../platforms/sdl/PlatformFont.h"
80#include "../platforms/sdl/PlatformEventQueue.h"
81#include "../platforms/sdl/PlatformTextBox.h"
82#include "../platforms/sdl/PlatformCanvas.h"
83#include "../platforms/sdl/PlatformAudioIn.h"
86#include "../platforms/sdl/PlatformMovie.h"
114 bool windowed,
bool resizeable,
bool unicode)
145 pcolor =
new PColor(
"black");
151 color = plist->
First();
175 width = plist->
Nth(2);
180 height = plist->
Nth(3);
195 myWindow->
Initialize(mode, depth, windowed,resizeable,
196 (
unsigned int)(
int)(width),
197 (
unsigned int)(
int)(height));
208#ifdef PEBL_EMSCRIPTEN
211 console.log(
"=== C++ MakeWindow() CALLED ===");
216 console.log(
"C++ MakeWindow: Variant as string: [" + UTF8ToString($0) +
"]");
220 console.log(
"C++ MakeWindow: tmp.IsComplexData() = " + $0);
287 std::string text = (plist->
First());
328 string text = (plist->
First()).GetString();
332 PError::AssertType(v2,
PEAT_FONT,
"Argument error in second parameter of function [MakeTextBox(<text>,<font>,<width>,<height>)]: ");
339 int width = plist->
Nth(3);
344 int height = plist->
Nth(4);
357 if((lang==
"HE") | (lang ==
"FA") | (lang ==
"AR"))
384 int width = plist->
First();
387 int height = plist->
Nth(2);
420 std::string name = plist->
First();
437 int red = plist->
First();
440 int green = plist->
Nth(2);
443 int blue = plist->
Nth(3);
466 std::string name = plist->
First();
470 int style = plist->
Nth(2);
474 int size = plist->
Nth(3);
478 PError::AssertType(vfg,
PEAT_COLOR,
"Argument error in fourth parameter of function [MakeFont(<filename>, <style>, <size>, <fg>, <bg>, <aa>)]: ");
484 PError::AssertType(vbg,
PEAT_COLOR,
"Argument error in fifth parameter of function [MakeFont(<filename>, <style>, <size>, <fg>, <bg>, <aa>)]: ");
490 bool aa = plist->
Nth(6);
583 int x = plist->
Nth(2);
586 int y = plist->
Nth(3);
608 int x = plist->
Nth(2);
611 int y = plist->
Nth(3);
996 int x = plist->
Nth(2);
999 int y = plist->
Nth(3);
1169 myAudio->SetRepeats(repeats);
1194 PError::SignalWarning(
"amplitude in MakeSineWave(<freq>,<length>,<amplitude> will produce clipping if greater than 1.0");
1224 PlatformAudioIn * myAudio =
new PlatformAudioIn();
1225 myAudio->CreateBuffer(v1);
1232 myOut->
LoadSoundFromData((tmp->audio),tmp->audiolen,&(tmp->spec),tmp->recordpos);
1304 PlatformAudioIn * myAudio =
new PlatformAudioIn();
1305 myAudio->UseBuffer(tmp);
1306 myAudio->Initialize(1);
1312 po->SetRecordPos(tmp->recordpos);
1342 std::cout <<
"====================================\n";
1343 std::cout <<
"RecordToBuffer() Debug Info:\n";
1344 std::cout <<
"Buffer address: " << (
void*)tmp->audio <<
"\n";
1345 std::cout <<
"Buffer size: " << tmp->audiolen <<
" bytes\n";
1346 std::cout <<
"Sample rate: " << tmp->spec.freq <<
" Hz\n";
1347 std::cout <<
"Bytes per sample: " << tmp->bytesPerSample <<
"\n";
1353 PlatformAudioIn * myAudio =
new PlatformAudioIn();
1354 myAudio->UseBuffer(tmp);
1355 myAudio->Initialize(1);
1358 myAudio->RecordToBuffer();
1361 unsigned int durationMs;
1362 if(plist->
Length() >= 2) {
1366 durationMs = (
unsigned int)(
int)v2;
1367 std::cout <<
"Using specified duration: " << durationMs <<
" ms\n";
1373 unsigned int totalSamples = tmp->audiolen / tmp->bytesPerSample;
1374 unsigned int sampleRate = tmp->spec.freq;
1375 durationMs = (totalSamples * 1000) / sampleRate;
1376 std::cout <<
"Using buffer-based duration: " << durationMs <<
" ms\n";
1379 std::cout <<
"Total buffer samples: " << (tmp->audiolen / tmp->bytesPerSample) <<
"\n";
1380 std::cout <<
"Recording for: " << durationMs <<
" ms\n";
1381 std::cout <<
"Recording started...\n";
1387 myAudio->PauseAudioMonitor();
1389 std::cout <<
"Recording paused.\n";
1390 std::cout <<
"Buffer recordpos: " << tmp->recordpos <<
"\n";
1393 int nonZeroCount = 0;
1394 for(
unsigned int i = 0; i < tmp->recordpos && i < 1000; i++) {
1395 if(tmp->audio[i] != 0) nonZeroCount++;
1397 std::cout <<
"First 1000 bytes: " << nonZeroCount <<
" non-zero values\n";
1400 Sint16* samples = (Sint16*)tmp->audio;
1401 std::cout <<
"First 10 samples: ";
1402 for(
int i = 0; i < 10; i++) {
1403 std::cout << samples[i] <<
" ";
1409 po->SetRecordPos(tmp->recordpos);
1411 std::cout <<
"====================================\n";
1433 int bufferSizeMs = (int)v1;
1436 PlatformAudioIn * myAudio =
new PlatformAudioIn();
1437 myAudio->CreateBuffer(bufferSizeMs);
1438 myAudio->Initialize(2);
1439 myAudio->RecordToBuffer();
1441 std::cout <<
"Audio monitor started with " << bufferSizeMs <<
"ms ring buffer\n";
1476 myAudio->CloseAudio();
1477 std::cout <<
"Audio monitor stopped and closed\n";
1512 int windowMs = (int)v2;
1515 return myAudio->GetRecentAudioStats(windowMs);
1560 int x = plist->
First();
1563 int y = plist->
Nth(2);
1566 int dx = plist->
Nth(3);
1569 int dy = plist->
Nth(4);
1592 int x1 = plist->
First();
1594 PError::AssertType(plist->
Nth(2),
PEAT_NUMBER,
"Argument error in second parameter of function [ThickLine(<x1>, <y1>, <x2>, <y2>, <thickness>,<color>)]: ");
1595 int y1 = plist->
Nth(2);
1597 PError::AssertType(plist->
Nth(3),
PEAT_NUMBER,
"Argument error in third parameter of function [ThickLine(<x1>, <y1>, <x2>, <y2>, <thickness>,<color>)]: ");
1598 int x2 = plist->
Nth(3);
1600 PError::AssertType(plist->
Nth(4),
PEAT_NUMBER,
"Argument error in fourth parameter of function [ThickLine(<x1>, <y1>, <x2>, <y2>, <thickness>,<color>)]: ");
1601 int y2 = plist->
Nth(4);
1603 PError::AssertType(plist->
Nth(5),
PEAT_NUMBER,
"Argument error in fifth parameter of function [ThickLine(<x1>, <y1>, <x2>, <y2>, <thickness>,<color>)]: ");
1604 int thickness = plist->
Nth(5);
1607 PError::AssertType(plist->
Nth(6),
PEAT_COLOR,
"Argument error in sixth parameter of function [ThickLine(<x1>, <y1>, <x2>, <y2>, <thickness>,<color>)]: ");
1631 int x = plist->
First();
1634 int y = plist->
Nth(2);
1637 int dx = plist->
Nth(3);
1640 int dy = plist->
Nth(4);
1642 PError::AssertType(plist->
Nth(5),
PEAT_COLOR,
"Argument error in fifth parameter of function [Rectangle(<x>, <y>, <dx>, <dy>, <color>, <filled>)]: ");
1646 int filled = plist->
Nth(6);
1669 int x = plist->
First();
1672 int y = plist->
Nth(2);
1675 int size = plist->
Nth(3);
1682 int filled = plist->
Nth(5);
1702 int x = plist->
First();
1705 int y = plist->
Nth(2);
1708 int rx = plist->
Nth(3);
1711 int ry = plist->
Nth(4);
1717 int filled = plist->
Nth(6);
1742 int x = plist->
First();
1745 int y = plist->
Nth(2);
1748 int r = plist->
Nth(3);
1755 int filled = plist->
Nth(5);
1779 int x = plist->
First();
1781 PError::AssertType(plist->
Nth(2),
PEAT_NUMBER,
"Argument error in second parameter of function [Polygon(<x>, <y>,<xpoints>, <ypoints>, <color>, <filled>)]: ");
1782 int y = plist->
Nth(2);
1784 PError::AssertType(plist->
Nth(3),
PEAT_LIST,
"Argument error in third parameter of function [Polygon(<x>, <y>, <xpoints>, <ypoints>, <color>, <filled>)]: ");
1787 PError::AssertType(plist->
Nth(4),
PEAT_LIST,
"Argument error in fourth parameter of function [Polygon(<x>, <y>, <xpoints>, <ypoints>, <color>, <filled>)]: ");
1790 PError::AssertType(plist->
Nth(5),
PEAT_COLOR,
"Argument error in fifth parameter of function [Polygon(<x>, <y>, <xpoints>, <ypoints>, <color>, <filled>)]: ");
1793 PError::AssertType(plist->
Nth(6),
PEAT_NUMBER,
"Argument error in sixth parameter of function [Polygon(<x>, <y>, <xpoints>, <ypoints>, <color>, <filled>)]: ");
1794 int filled = plist->
Nth(6);
1817 int x = plist->
First();
1819 PError::AssertType(plist->
Nth(2),
PEAT_NUMBER,
"Argument error in second parameter of function [Bezier(<x>, <y>,<xpoints>, <ypoints>, <steps>, <color>)]: ");
1820 int y = plist->
Nth(2);
1822 PError::AssertType(plist->
Nth(3),
PEAT_LIST,
"Argument error in third parameter of function [Bezier(<x>, <y>, <xpoints>, <ypoints>, <steps>, <color>)]: ");
1825 PError::AssertType(plist->
Nth(4),
PEAT_LIST,
"Argument error in fourth parameter of function [Bezier(<x>, <y>, <xpoints>, <ypoints>, <steps>, <color>)]: ");
1828 PError::AssertType(plist->
Nth(5),
PEAT_NUMBER,
"Argument error in fifth parameter of function [Bezier(<x>, <y>, <xpoints>, <ypoints>, <steps>, <color>)]: ");
1829 int steps = plist->
Nth(5);
1831 PError::AssertType(plist->
Nth(6),
PEAT_COLOR,
"Argument error in sixth parameter of function [Bezier(<x>, <y>, <xpoints>, <ypoints>, <steps>, <color>)]: ");
1866 PError::AssertType(plist->
Nth(2),
PEAT_NUMBER,
"Argument error in second parameter of function [ROTOZOOM(<widget>,<rotation>,<xzoom>, <yzoom>, <smooth>)]: ");
1869 PError::AssertType(plist->
Nth(3),
PEAT_NUMBER,
"Argument error in third parameter of function [ROTOZOOM(<widget>,<rotation>,<xzoom>, <yzoom>, <smooth>)]: ");
1873 PError::AssertType(plist->
Nth(4),
PEAT_NUMBER,
"Argument error in fourth parameter of function [ROTOZOOM(<widget>,<rotation>,<xzoom>, <yzoom>, <smooth>)]: ");
1876 PError::AssertType(plist->
Nth(5),
PEAT_NUMBER,
"Argument error in fifth parameter of function [ROTOZOOM(<widget>,<rotation>,<xzoom>, <yzoom>, <smooth>)]: ");
1877 int smooth = plist->
Nth(5);
1902 int width = plist->
First();
1905 int height = plist->
Nth(2);
1956 int width = plist->
Nth(3);
1960 int height = plist->
Nth(4);
1963 PlatformMovie* myMovie =
new PlatformMovie();
1964 myMovie->LoadMovie(filename,window,width,height);
1994 PlatformMovie* myMovie =
new PlatformMovie();
1995 myMovie->LoadAudioFile(filename);
2021 myMovie->StartPlayback();
2040 myMovie->PausePlayback();
2053 std::string name = plist->
First();
2073 PEyeTracker * pet =
new PEyeTracker();
2102 gtl::GazeData * gd = pet->GetGazeFrame();
2104 Variant obj2 = ConvertGazeData(*gd);
2127 PEBLGaze * pg =
new PEBLGaze(fname);
PlatformEnvironment * myEnv
PlatformEventQueue * gEventQueue
static VariableMap gGlobalVariableMap
virtual bool SetPanning(const double left, const double right)
Variant GetProperty(std::string prop) const
counted_ptr< PEBLObjectBase > GetObject() const
void SetProperty(std::string, Variant v)
bool PropertyExists(std::string prop) const
This class simply represent an abstract text-based object.
virtual std::ostream & PrintProperties(std::ostream &out)
virtual Variant GetPropertyList()
virtual bool AddWindow(PWindow *window)
Variant Nth(unsigned int n)
unsigned long Length() const
void PushBack(const Variant &v)
This class is the basic generic text box.
virtual std::string GetText() const
Validator platform textbox - no rendering, used only for compilation.
virtual void SetFont(counted_ptr< PEBLObjectBase > font)
virtual void SetText(std::string text)
virtual void SetEditable(bool val)
virtual bool SetProperty(std::string, Variant v)
virtual void SetPosition(pInt x, pInt y)
This sets the widget's position on its parent widget.
Variant RetrieveValue(const std::string &varname)
bool IsComplexData() const
bool IsStackSignal() const
std::string GetString() const
PComplexData * GetComplexData() const
Variant SetEyeTrackerHandler(Variant v)
Variant SetPanning(Variant v)
Variant GetPixelColor(Variant v)
Variant SetEditable(Variant v)
Variant StartAudioMonitor(Variant v)
Variant DrawFor(Variant v)
Variant MakeColorRGB(Variant v)
Variant PrintProperties(Variant v)
Variant GetEyeObject(Variant v)
Variant ConnectEyeTracker(Variant v)
Variant GetPropertyList(Variant v)
void MakeEnvironment(PEBLVideoMode mode, PEBLVideoDepth depth, bool windowed, bool resizeable, bool unicode)
This function instantiates the namespace-viewable.
Variant Rectangle(Variant v)
Variant GetAudioStats(Variant v)
Variant MakeLabel(Variant v)
Variant MakeWindow(Variant v)
Variant ThickLine(Variant v)
Variant MakeCustomObject(Variant v)
Variant RotoZoom(Variant v)
Variant GetParent(Variant v)
Variant SetText(Variant v)
Variant RecordToBuffer(Variant v)
Variant SaveAudioToWaveFile(Variant v)
Variant SetPlayRepeats(Variant v)
Variant StartPlayback(Variant v)
Variant PlayForeground(Variant v)
Variant GetProperty(Variant v)
Variant MakeAudioInputBuffer(Variant v)
Variant MakeFont(Variant v)
Variant PausePlayback(Variant v)
Variant Bezier(Variant v)
Variant SetFont(Variant v)
Variant LoadMovie(Variant v)
Variant RemoveObject(Variant v)
This removes a child widget from the parent widget.
Variant SetPoint(Variant v)
Variant GetSize(Variant v)
Variant GetVocalResponseTime(Variant v)
Variant GetLineBreaks(Variant v)
Variant Polygon(Variant v)
Variant ResizeWindow(Variant v)
Variant Circle(Variant v)
Variant MakeSawtoothWave(Variant v)
Variant MakeTextBox(Variant v)
Variant PropertyExists(Variant v)
Variant MakeCanvas(Variant v)
Variant Ellipse(Variant v)
Variant GetText(Variant v)
Variant LoadSound(Variant v)
Variant MakeColor(Variant v)
Variant Square(Variant v)
Variant LoadAudioFile(Variant v)
Variant SetCursorPosition(Variant v)
Variant StopAudioMonitor(Variant v)
Variant MakeSineWave(Variant v)
Variant SetProperty(Variant v)
Variant PlayBackground(Variant v)
Variant GetCursorPosition(Variant v)
Variant MakeChirp(Variant v)
Variant MakeImage(Variant v)
Variant MakeSquareWave(Variant v)
Variant AddObject(Variant v)
This function adds a widget to a parent widget.
std::string ToUpper(const std::string &text)
void SignalWarning(const std::string &message)
void AssertType(Variant v, int type, const std::string &outsidemessage)
void SignalFatalError(const std::string &message)