小编Rem*_*emy的帖子

优化GameBoy Z80中的位操作算法

不是一个家庭作业问题,而是我正在开发的游戏.

我有两种16位RGB颜色,并希望根据其他六个四位数量改变它们的六个通道.算法简单但乏味; 我正在寻找一种方法来通过一次做更多有用的工作来优化它.

高级概述:

  • hl指向四个颜色字节.[hl] = %gggrrrrr,[hl+1] = %0bbbbbgg,[hl+2] = %GGGRRRRR,和[hl+3] = %0BBBBBGG.(这是两种颜色,rgbRGB.)
  • bc指向三个delta字节.[bc] = %hhhhaaaa,[bc+1] = %ddddssss[bc+2] = %ppppqqqq.(这是6个Delta值h,a,d,s,p,和q).
  • 因此,有六个5位颜色通道值和六个4位增量值.我想将每个颜色通道C与一个delta值D配对,并且像这样改变C:C' = C +(D&%11) - ((D&%1100)>> 2),但保持C在其5之内-bit bounds [0,31].我实际上并不关心它们是如何配对的:任何方便的一对一配对都很好.如果C +((D&%1100)>> …

assembly bit-manipulation z80 gameboy

13
推荐指数
1
解决办法
413
查看次数

Qt 5.5的QWebEngineView与FramelessWindowHint兼容吗?

我正在Qt中编写一个跨平台的Web浏览器,因为它通过QWebView或更新的QWebEngineView内置了WebKit支持.为了获得紧凑的窗口镶边,我想通过Qt :: FramelessWindowHint禁用本机窗口标题栏和边框,但仍然可以获得本机行为,如调整大小和Windows的Aero Snap.

首先,我减少了PKEBorderlessWindow演示.这很好用:在Windows 8.1 x64上,窗口可以调整大小,可以拖动或双击自定义标题栏,Aero Snap也可以.

然后我尝试用QWebEngineView替换中央QLabel.这导致灰色原生大小的边框出现在我的窗口周围.当我在窗口顶部有交互式小部件时(如菜单或工具栏),带有QWebEngineView的"ghost"标题栏会将它们向下推,但会在其位置接受光标点击.

这是比较两个窗口的屏幕截图.(在深色背景上查看它以更好地看到右侧的浅灰色边框.)

QLabel和QWebEngineView窗口

QWebEngineView是否与无框窗口兼容,还是应该处理原生窗口chrome的浪费空间?


编辑:用QWebView替换QWebEngineView可以避免此问题:

QWebView窗口

但是,不推荐使用WebView,WebEngine具有更多有用的功能:

  • 使用Chromium的Blink而不是Safari的WebKit渲染
  • 多进程,因此您可以在不锁定UI的情况下运行Javascript
  • 不会泄漏Panopticlick上的浏览器插件详细信息(试试看,QWebView在Javascript中填充navigator.plugins但QWebEngineView没有)

不过,我真的不想在原生标题栏上浪费空间,所以如果QWebEngineView可以用于无框窗口,我想知道如何使用.


mainwindow.h:

#include <QtWidgets>
#include <QToolBar>

class MainWindow : public QMainWindow {
    Q_OBJECT
public:
    MainWindow();
protected:
    void showEvent(QShowEvent *event) Q_DECL_OVERRIDE;
    bool nativeEvent(const QByteArray &eventType, void *message, long *result) Q_DECL_OVERRIDE;
private:
    QToolBar *titleBar;
};
Run Code Online (Sandbox Code Playgroud)

mainwindow.cpp:

#include <QtWidgets>
#include <QLabel>
#include <QWebEngineView>
#include <windows.h>
#include <windowsx.h>
#include "mainwindow.h"

MainWindow::MainWindow() : QMainWindow() {
    setWindowFlags(windowFlags() | Qt::FramelessWindowHint);
    titleBar = addToolBar(tr("Title Bar")); …
Run Code Online (Sandbox Code Playgroud)

c++ qt webkit qwebview borderless

5
推荐指数
0
解决办法
1136
查看次数

C++ 11模板中的一个参数可以依赖于另一个吗?

我的类SimRank有两个浮点常量参数,C和D.我希望它们是静态constexprs,而不是const实例成员.但我也希望让用户选择哪一种使用浮点,float对尺寸或double精密.

显而易见的方法是这样的:

template<typename FP, int _K, FP _C, FP _D>
class SimRank {
    static constexpr int K = _K;
    static constexpr FP C = _C;
    static constexpr FP D = _D;
};

template<int _K, float _C, float _D>
class SimRank<float> {};

template<int _K, double _C, double _D>
class SimRank<double> {};

int main() {
    SimRank<5, 0.8, 0> sd; // uses double
    SimRank<10, 0.6f, 0.05f> sf; // uses float
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试这个时,gcc会打印许多错误消息,所以显然语法不存在.我也做不了这样的事情:

template<typename FP> template<int …
Run Code Online (Sandbox Code Playgroud)

c++ templates typename c++11

2
推荐指数
1
解决办法
141
查看次数