2019-07-03 03:15 AM
Hi
I have som problems using ORIENTATION_PORTRAIT. I got an display physically in landscape orientation, but optionally used in portrait orientation.
Texts and lines works fine but images are not rotated automatically. :(
But I am surprised that images using the touchgfx::Image class does not rotate automatically.
Therefore I have tried to use the TextureMapper instead. When used in portrait mode The TextureMapper works fine, rotating and scaling works perfect. But in Portrait orientation it seems only to work if the image area and/or the bitmap size are square. If e.g. the bitmap size is 96*192 pixels in an area at 96*192 the image is like interlaced in either rotation and scale.
The center icon is square. The others are 192x96.
The left and center icon are rotated 60° and the right one is rotated 270°
Is this a bug, or am I used the TouchGFX wrongly?
I am constructing the screens programmically as the are too dynamic to use the designer. But I am using the Designer for loading the images and controlling the screen navigation.
Here is some code snippets:
In BoardConfiguration:
hal.setDisplayOrientation(ORIENTATION_PORTRAIT);
In BitmapDatabase:
const uint16_t BITMAP_AIRSPRAY_OFF_ID = 1; // Size: 192x96 pixels
In header file:
#include <touchgfx/widgets/TextureMapper.hpp>
touchgfx::TextureMapper images1;
In Constructor:
images1.setPosition(0, 0, 192, 92);
images1.updateAngles(0, 0, 3*PI/2);
add(image1);
Later:
images1.setBitmap(touchgfx::Bitmap(BITMAP_AIRSPRAY_OFF_ID));
images1.setOrigo(images1..getWidth()/2, images1.getHeight()/2);
images1.setVisible(true);
images1.invalidate();
BR
Kasper
2019-07-03 05:45 AM
Hi,
I just got some more observations. It is the bitmap size that is the problem. If not square, the image tilts. A square image will always be shown correctly, even if the container is not square.
Kasper