void YesNoCancelPopup::setCaption(String caption) { captionLabel->setText(caption); setWindowSize(captionLabel->getWidth() + 50, 80); captionLabel->setPosition(padding + (captionLabel->getWidth() + 50 - captionLabel->getWidth()) / 2.0, 35); buttonAnchor->setPosition(padding + ((captionLabel->getWidth() + 50 - 360) / 2.0), 0); }
int NativeWindow::initialize(bool _createFullWindow) { int returnCode; int numberModes; screen_display_mode_t* screenModes; int type; if (_createFullWindow) { returnCode = screen_create_window(&_screenWindow, _screenContext); qDebug() << "NativeWindow::initialize: _screenWindow (full window): " << ":" << _screenWindow << ":" << _screenContext << ":" << returnCode; if (returnCode) { perror("screen_create_window"); return EXIT_FAILURE; } } else { returnCode = screen_create_window_type(&_screenWindow, _screenContext, SCREEN_CHILD_WINDOW); qDebug() << "NativeWindow::initialize: _screenWindow (child window): " << _screenWindow << ":" << returnCode; if (returnCode) { perror("screen_create_window (child window)"); return EXIT_FAILURE; } } _displaysMutex.lock(); if (_screenDisplays) { free (_screenDisplays); } // try this first as it will fail if an HDMI display is not attached screen_get_context_property_iv(_screenContext, SCREEN_PROPERTY_DISPLAY_COUNT, &_numberDisplays); _screenDisplays = (screen_display_t *)calloc(_numberDisplays, sizeof(screen_display_t)); screen_get_context_property_pv(_screenContext, SCREEN_PROPERTY_DISPLAYS, (void **)_screenDisplays); for (int index = 0; index < _numberDisplays; index++) { int displayID; returnCode = screen_get_display_property_iv(_screenDisplays[index], SCREEN_PROPERTY_ID, (int *)&displayID); qDebug() << "NativeWindow::initialize: display: " << ":" << index << ":" << displayID << ":" << _display << ":" << _screenDisplays[index]; if (returnCode) { perror("display ID"); return EXIT_FAILURE; } else { if (displayID == _display) { screen_get_display_property_iv(_screenDisplays[index], SCREEN_PROPERTY_TYPE, &type); if (type == SCREEN_DISPLAY_TYPE_HDMI) { returnCode = screen_set_window_property_pv(_screenWindow, SCREEN_PROPERTY_DISPLAY, (void **)&(_screenDisplays[index])); if (returnCode) { perror("window display"); return EXIT_FAILURE; } } } } } _displaysMutex.unlock(); qDebug() << "NativeWindow::initialize: "<< _screenContext << ":" << _screenWindow; returnCode = setWindowFormat(_format); if (returnCode) { perror("screen_set_window_property_iv(SCREEN_PROPERTY_FORMAT)"); return EXIT_FAILURE; } returnCode = setWindowTransparency(_transparency); if (returnCode) { perror("transparency"); return EXIT_FAILURE; } returnCode = screen_get_window_property_pv(_screenWindow, SCREEN_PROPERTY_DISPLAY, (void **)&_screenDisplay); if (returnCode) { perror("screenDisplay"); return EXIT_FAILURE; } int angle = atoi(getenv("ORIENTATION")); screen_get_display_property_iv(_screenDisplay, SCREEN_PROPERTY_MODE_COUNT, &numberModes); screenModes = (screen_display_mode_t *)calloc(numberModes, sizeof(screen_display_mode_t)); returnCode = screen_get_display_property_pv(_screenDisplay, SCREEN_PROPERTY_MODE, (void**)screenModes); if (returnCode) { perror("screen modes"); return EXIT_FAILURE; } int dpi = calculateDPI(); if (dpi == EXIT_FAILURE) { fprintf(stderr, "Unable to calculate dpi\n"); return EXIT_FAILURE; } returnCode = setWindowPosition(_x, _y); if (returnCode) { perror("window position"); return EXIT_FAILURE; } returnCode = setWindowSize(_width, _height); if (returnCode) { perror("window size"); return EXIT_FAILURE; } returnCode = setWindowZ(_z); if (returnCode) { perror("z order"); return EXIT_FAILURE; } if (_sourceWidth > 0) { returnCode = setWindowSourcePosition(_sourceX, _sourceY); if (returnCode) { perror("source size"); return EXIT_FAILURE; } returnCode = setWindowSourceSize(_sourceWidth, _sourceHeight); if (returnCode) { perror("source size"); return EXIT_FAILURE; } } if (_bufferWidth > 0) { returnCode = setWindowBufferSize(_bufferWidth, _bufferHeight); if (returnCode) { perror("buffer size"); return EXIT_FAILURE; } } returnCode = setWindowAngle(_angle); if (returnCode) { perror("angle"); return EXIT_FAILURE; } returnCode = screen_create_window_buffers(_screenWindow, _nbuffers); if (returnCode) { perror("screen_create_window_buffers"); return EXIT_FAILURE; } _usage = Graphics::getNativeWindowUsage(); // enable this in case we need any native API access to this window _usage |= SCREEN_USAGE_NATIVE; returnCode = setWindowUsage(_usage); if (returnCode) { perror("screen_set_window_property_iv(window usage)"); return EXIT_FAILURE; } returnCode = joinWindowGroup(_group); if (returnCode) { perror("window group"); return EXIT_FAILURE; } returnCode = setScreenWindowID(_id); if (returnCode) { perror("window ID"); return EXIT_FAILURE; } qDebug() << "NativeWindow::initialize: "<< angle << ":" << numberModes << ":" << screenModes[0].width << ":" << screenModes[0].height << ":" << dpi; if (screenModes != NULL) { free(screenModes); } return EXIT_SUCCESS; }
void ReymentaServerApp::setup() { // parameters mParameterBag = ParameterBag::create(); mParameterBag->mLiveCode = true; mParameterBag->mRenderThumbs = false; loadShader(getAssetPath("default.fs")); // utils mBatchass = Batchass::create(mParameterBag); CI_LOG_V("reymenta setup"); mFirstLaunch = true; setWindowSize(mParameterBag->mMainWindowWidth, mParameterBag->mMainWindowHeight); // 12 fps is enough for a router setFrameRate(120.0f); setWindowPos(ivec2(0, 40)); // setup shaders and textures mBatchass->setup(); mParameterBag->mMode = MODE_WARP; mParameterBag->iResolution.x = mParameterBag->mRenderWidth; mParameterBag->iResolution.y = mParameterBag->mRenderHeight; mParameterBag->mRenderResolution = ivec2(mParameterBag->mRenderWidth, mParameterBag->mRenderHeight); CI_LOG_V("createRenderWindow, resolution:" + toString(mParameterBag->iResolution.x) + "x" + toString(mParameterBag->iResolution.y)); mParameterBag->mRenderResoXY = vec2(mParameterBag->mRenderWidth, mParameterBag->mRenderHeight); mParameterBag->mRenderPosXY = ivec2(mParameterBag->mRenderX, mParameterBag->mRenderY); // instanciate the console class mConsole = AppConsole::create(mParameterBag, mBatchass); // imgui margin = 3; inBetween = 3; // mPreviewFboWidth 80 mPreviewFboHeight 60 margin 10 inBetween 15 mPreviewWidth = 160;mPreviewHeight = 120; w = mParameterBag->mPreviewFboWidth + margin; h = mParameterBag->mPreviewFboHeight * 2.3; largeW = (mParameterBag->mPreviewFboWidth + margin) * 4; largeH = (mParameterBag->mPreviewFboHeight + margin) * 5; largePreviewW = mParameterBag->mPreviewWidth + margin; largePreviewH = (mParameterBag->mPreviewHeight + margin) * 2.4; displayHeight = mParameterBag->mMainDisplayHeight - 50; mouseGlobal = false; showConsole = showGlobal = showTextures = showAudio = showMidi = showChannels = showShaders = true; showTest = showTheme = showOSC = showFbos = false; /* set ui window and io events callbacks with autorender == false, we have to use NewFrame and Render but we have access to DrawData to send to remoteImGui void Renderer::initFontTexture() { unsigned char* pixels; int width, height; ImGui::GetIO().Fonts->GetTexDataAsRGBA32(&pixels, &width, &height); mFontTexture = gl::Texture::create( pixels, GL_RGBA, width, height, gl::Texture::Format().magFilter(GL_LINEAR).minFilter(GL_LINEAR) ); ImGui::GetIO().Fonts->ClearTexData(); ImGui::GetIO().Fonts->TexID = (void *)(intptr_t) mFontTexture->getId(); } ui::initialize(ui::Options().autoRender(false).fonts({ { getAssetPath("KontrapunktBob-Light.ttf"), 12 }, { getAssetPath("KontrapunktBob-Bold.ttf"), 20 }, { getAssetPath("DroidSans.ttf"), 12 } }) .fontGlyphRanges("DroidSans", { 0xf000, 0xf06e, 0 })); */ ui::initialize(ui::Options().autoRender(false)); // warping mUseBeginEnd = false; updateWindowTitle(); disableFrameRate(); // initialize warps mSettings = getAssetPath("") / "warps.xml"; if (fs::exists(mSettings)) { // load warp settings from file if one exists mWarps = Warp::readSettings(loadFile(mSettings)); } else { // otherwise create a warp from scratch mWarps.push_back(WarpBilinear::create()); mWarps.push_back(WarpPerspective::create()); mWarps.push_back(WarpPerspectiveBilinear::create()); } // load test image try { mImage = gl::Texture::create(loadImage(loadAsset("help.jpg")), gl::Texture2d::Format().loadTopDown().mipmap(true).minFilter(GL_LINEAR_MIPMAP_LINEAR)); //mSrcArea = mImage->getBounds(); // adjust the content size of the warps Warp::setSize(mWarps, mImage->getSize()); } catch (const std::exception &e) { console() << e.what() << std::endl; } mSrcArea = Area(0, 0, mParameterBag->mFboWidth*4, mParameterBag->mFboHeight*4); mMesh = gl::VboMesh::create(geom::Rect()); }