SDL中文论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3355|回复: 0
打印 上一主题 下一主题

[gui2] twidget::orientation_swap_size

[复制链接]

187

主题

346

帖子

2450

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2450
跳转到指定楼层
楼主
发表于 2016-5-15 21:10:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 ancientcc 于 2020-11-7 15:18 编辑

  • 横屏尺寸。宽度总是大于高度的尺寸。在配置中存储的总是模屏尺寸。
  • 朝向尺寸。和当前朝向一样的尺寸。模屏尺寸+当前朝向==>朝向尺寸,朝向不是存储在配置中,而是写在app内在逻辑。


根据当前要求的朝向,须要的话互换宽度和高度。互换条件:当前要求的朝向不是横屏就互换。从使用角度归纳,该函数可方便实现横屏尺寸、朝向尺寸之间相互转换。
语法
  1. tpoint twidget::orientation_swap_size(int width, int height)
复制代码


参数
width计算了hdpi_scale
height计算了hdpi_scale

(width、height)或是横屏尺寸,或是朝向尺寸。

返回值
tpoint.x指示结果的宽度、tpoint.y指示结果的高度。

范例
  1. tpoint revise_screen_size(const int width, const int height)
  2. {
  3.         tpoint landscape_size = twidget::orientation_swap_size(width, height);
  4.         if (landscape_size.x < preferences::min_allowed_width()) {
  5.                 landscape_size.x = preferences::min_allowed_width();
  6.         }
  7.         if (landscape_size.y < preferences::min_allowed_height()) {
  8.                 landscape_size.y = preferences::min_allowed_height();
  9.         }

  10.         tpoint normal_size = twidget::orientation_swap_size(landscape_size.x, landscape_size.y);
  11.         return normal_size;
  12. }
  13. 第一个orientation_swap_size从朝向尺寸得到横屏尺寸,然后确保尺寸不小于容许尺寸,第二个orientation_swap_size从横屏尺寸恢复回朝向尺寸。
复制代码

注释
一般用在两种场合。
  • 从横屏尺寸得到朝向尺寸。举个例子,配置中存的是横屏尺寸,App启动时调用该函数得到朝向尺寸。
  • 从朝向尺寸得到横屏尺寸。


相关类、函数
  1. bool twidget::landscape_from_orientation(torientation orientation, bool def)
复制代码

根据指定的朝向值判断是否要求横屏。orientation设定了自动判断时,取def,否则取orientation。它的一个主要作用是根据窗口中的“orientation”字段判断显示该窗口要使用什么朝向。

  1. bool twidget::should_conside_orientation(const int width, const int height)
复制代码

判断指定的尺寸是否要考虑朝向。当窗口尺寸已经很大时,会认为不必再考虑横屏竖屏了,像iPad。当前使用不必考虑的最小值是都宽度、高度都大于540。width、height是计算了hdpi_scale。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|丽谷软件|libsdl.cn

GMT+8, 2024-5-8 16:27 , Processed in 0.066976 second(s), 19 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表