Example #1
0
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);
}
Example #2
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;
    }
Example #3
0
    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;
        }
    }
Example #4
0
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;
        }
    }
}
Example #5
0
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;
}
Example #6
0
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;
}