BlinkenArea - GitList
Repositories
Blog
Wiki
libetherpix
Code
Commits
Branches
Tags
Search
Tree:
b636ea1
Branches
Tags
master
libetherpix
config_gen
src
pixel.cpp
keep aspect ratio of simulator image
Stefan Schuermans
commited
b636ea1
at 2017-06-07 21:38:03
pixel.cpp
Blame
History
Raw
/* * EtherPix config file generator * * Copyright 2010-2017 Stefan Schuermans <stefan schuermans info> * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 3 of the License. * * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ #include <iostream> #include "box.h" #include "object.h" #include "pixel.h" #include "point.h" Pixel::Pixel(const Object *pObjPixel): mpObjPixel(pObjPixel), mX(0), mY(0) { } int Pixel::pixCoord(const Point &pix0, const Point &pixSz, unsigned int width, unsigned int height) { // get center of pixel mpObjPixel->getBounds(mBounds); mBounds.getCenter(mCenter); // get coordinates of pixel Point delta = mCenter - pix0; mX = (unsigned int)(delta.mX / pixSz.mX); mY = (unsigned int)(delta.mY / pixSz.mY); // check pixel coordinates if (mX >= width || mY >= height) { std::cerr << "pixel at " << mCenter.mX << "," << mCenter.mY << " is out of video frame (" << mX << "," << mY << ")" << std::endl; return -1; } else return 0; } void Pixel::writePixel(std::ostream & strm) const { strm << " " << mX << "," << mY; } void Pixel::writeSimPixel(std::ostream & strm, const Box & boundsVideoQuad) const { Point c, bl, tr; boundsVideoQuad.getRelative(mCenter, c); boundsVideoQuad.getRelative(mBounds.mBL, bl); boundsVideoQuad.getRelative(mBounds.mTR, tr); double r1 = (c - bl).abs(); double r2 = (c - tr).abs(); double r = r1 > r2 ? r1 : r2; strm << " " << c.mX << "," << c.mY << "," << r; }