void liftHeight(int height) { int goingUp = height > currentHeight() ? 1 : -1; setLift(liftAutoSpeed * goingUp); // The goingUp variable makes it so that if it's 60->10, it waits until -10 < -60 while (currentHeight() * goingUp < height * goingUp) { // Wait } setLift(0); }
void AddLine( LVRendLineInfo * line ) { if (pagestart==NULL ) { StartPage( line ); } else { if (line->getStart()<last->getEnd()) return; // for table cells unsigned flgSplit = CalcSplitFlag( last->getSplitAfter(), line->getSplitBefore() ); //bool flgFit = currentHeight( next ? next : line ) <= page_h; bool flgFit = currentHeight( line ) <= page_h; if (!flgFit) { // doesn't fit // split // if ( !next || !pageend) { next = line; pageend = last; // } AddToList(); StartPage(next); } else if (flgSplit==RN_SPLIT_ALWAYS) { //fits, but split is mandatory if (next==NULL) { next = line; } pageend = last; AddToList(); StartPage(line); } else if (flgSplit==RN_SPLIT_AUTO) { //fits, split is allowed //update split candidate pageend = last; next = line; } } last = line; }
void AddFootnoteLine( LVRendLineInfo * line ) { int dh = line->getEnd() - (footstart ? footstart->getStart() : line->getStart()) + (footheight==0?FOOTNOTE_MARGIN:0); int h = currentHeight(NULL); //next #ifdef DEBUG_FOOTNOTES //CRLog::trace("Add footnote line %d footheight=%d h=%d dh=%d page_h=%d", line->start, footheight, h, dh, page_h); #endif if ( h + dh > page_h ) { #ifdef DEBUG_FOOTNOTES //CRLog::trace("No current page space for this line, %s", (footstart?"footstart is not null":"footstart is null")); #endif if ( footstart==NULL ) { ////CRLog::trace("Starting new footnote fragment"); // no footnote lines fit //pageend = last; AddToList(); //StartPage( last ); StartPage( last ); } else { AddFootnoteFragmentToList(); //const LVRendLineInfo * save = ?:last; // = NULL; // LVE-TODO-TEST //if ( next != NULL ) { pageend = last; AddToList(); StartPage( NULL ); //StartPage( next ); //} } footstart = footlast = line; footend = NULL; return; } if ( footstart==NULL ) { footstart = footlast = line; footend = line; } else { footend = line; footlast = line; } }
void GLWindow::computeScale() { scaleValue = 16.0f; scaleMode = 3; float w = (float)currentWidth(); float h = (float)currentHeight(); if ( (w/h) < (16.0f/9.0f)) { if(w>=1920) { scaleMode = 0; scaleValue = 64.0f; } else if(w>=1440) { scaleMode = 1; scaleValue = 48.0f; } else if(w>=960) { scaleMode = 2; scaleValue = 32.0f; } } else { if(h>=1080) { scaleMode = 0; scaleValue = 64.0f; } else if(h>=810) { scaleMode = 1; scaleValue = 48.0f; } else if(h>=540) { scaleMode = 2; scaleValue = 32.0f; } } }
int Webcam::getFrameBW(GrayScaleImage &image) { int ret = 0; // Dequeue a buffer. ret = ioctl(dev, VIDIOC_DQBUF, &buf); if (ret < 0) { KError("Unable to dequeue buffer", errno); return EXIT_FAILURE; } // Save the image. //uchar jpegBuf1[buf.bytesused + 420]; if (fmt.fmt.pix.pixelformat == V4L2_PIX_FMT_MJPEG) { /* if (mjpegToJpeg(mem[buf.index], jpegBuf1, (int) buf.bytesused) == EXIT_SUCCESS) image.loadFromData(jpegBuf1, buf.bytesused+420); */ return EXIT_FAILURE; } if (fmt.fmt.pix.pixelformat == V4L2_PIX_FMT_YUYV) { image.setImage(yuvToBW(mem[buf.index], currentWidth(), currentHeight()), currentWidth(), currentHeight()); } // Requeue the buffer. ret = ioctl(dev, VIDIOC_QBUF, &buf); if (ret < 0) { KError("Unable to requeue buffer", errno); return EXIT_FAILURE; } if(!imageNotifier->isEnabled()) imageNotifier->setEnabled(true); return EXIT_SUCCESS; }
int Webcam::startStreaming() { int i, ret; if (!opened) return -1; if ((ret = setFormat(currentWidth(), currentHeight(), currentPixelFormat())) != 0) { printf("set format error : %d\n", ret); return EXIT_FAILURE; } //Allocate buffers if (!allocated) { memset(&rb, 0, sizeof rb); rb.count = 2; rb.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; rb.memory = V4L2_MEMORY_MMAP; ret = ioctl(dev, VIDIOC_REQBUFS, &rb); if (ret < 0) { KError("Unable to allocate buffers", errno); return EXIT_FAILURE; } allocated = true; } // Map the buffers. / memset(&buf, 0, sizeof buf); buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; buf.memory = V4L2_MEMORY_MMAP; for (i = 0; i < 2; i++) { buf.index = i; ret = ioctl(dev, VIDIOC_QUERYBUF, &buf); if (ret < 0) { KError("Unable to query buffer", errno); return EXIT_FAILURE; } mem[i] = (uchar *) mmap(0, buf.length, PROT_READ | PROT_WRITE, MAP_SHARED, dev, buf.m.offset); if (mem[i] == MAP_FAILED) { KError("Unable to map buffer", errno); return EXIT_FAILURE; } bufLength = buf.length; mmaped = true; } // Queue the buffers. / for (i = 0; i < 2; i++) { buf.index = i; ret = ioctl(dev, VIDIOC_QBUF, &buf); if (ret < 0) { KError("Unable to queue buffer", errno); return EXIT_FAILURE; } } // Start streaming. ret = ioctl(dev, VIDIOC_STREAMON, &buf.type); if (ret < 0) { KError("Unable to start capture", errno); return EXIT_FAILURE; } imageNotifier->setEnabled(true); streaming = true; return EXIT_SUCCESS; }