diff --git a/src/font/font-demo.cpp b/src/font/font-demo.cpp index 58688ce1b..5ee838d1e 100644 --- a/src/font/font-demo.cpp +++ b/src/font/font-demo.cpp @@ -54,14 +54,11 @@ int main(int argc, char **argv) { vector dst = {{WIDTH/3,0},{WIDTH/1.5,0},{WIDTH,HEIGHT},{0,HEIGHT}}; cv::Mat M = cv::getPerspectiveTransform(src, dst); - size_t cnt = 1; - float y = 0; + size_t cnt = 0; + float y; while (true) { y = 0; - //rewind the istringstream - iss.clear(std::stringstream::goodbit); - iss.seekg(0); //Activate the OpenCL context for OpenGL gl::bind(); @@ -74,12 +71,13 @@ int main(int argc, char **argv) { nvgFontFace(vg, "serif"); nvgFillColor(vg, nvgHSLA(0.15, 1, 0.5, 255)); nvgTextAlign(vg, NVG_ALIGN_CENTER | NVG_ALIGN_TOP); + + //only draw lines that are visible off_t progressLines = cnt / FONT_SIZE; off_t skipLines = (numLines - progressLines) - 1; skipLines = skipLines < 0 ? 0 : skipLines; off_t maxLines = HEIGHT / FONT_SIZE; - off_t currentHeight = (numLines - skipLines) * FONT_SIZE; - off_t translateY = cnt - currentHeight; + off_t translateY = cnt - (numLines - skipLines) * FONT_SIZE; nvgTranslate(vg, 0, translateY); for (std::string line; std::getline(iss, line); ) { @@ -99,6 +97,10 @@ int main(int argc, char **argv) { if(y == 0) //nothing drawn, exit break; + //rewind the istringstream + iss.clear(std::stringstream::goodbit); + iss.seekg(0); + //Aquire frame buffer from OpenGL gl::acquire_from_gl(frameBuffer); //fake 3d text effect