问题列表 - 第5888页

C++定义跨文件常量的最佳方法

我正在开发一款游戏并且有一个有趣的问题.我有一些游戏范围的常量值,我想在一个文件中实现.现在我有这样的事情:

constants.cpp

extern const int BEGINNING_HEALTH = 10;
extern const int BEGINNING_MANA = 5;
Run Code Online (Sandbox Code Playgroud)

constants.hpp

extern const int BEGINNING_HEALTH;
extern const int BEGINNING_MANA;
Run Code Online (Sandbox Code Playgroud)

然后文件只是#include"constants.hpp"这很好用,直到我需要使用其中一个常量作为模板参数,因为外部链接的常量不是有效的模板参数.所以我的问题是,实现这些常量的最佳方法是什么?我担心简单地将常量放在头文件中会导致在每个翻译单元中定义它们.而且我不想使用宏.

谢谢

c++ templates const constants extern

10
推荐指数
3
解决办法
1万
查看次数

禁用特定GDI设备上下文的抗锯齿

我正在使用第三方库将图像渲染到GDI DC,我需要确保在没有任何平滑/抗锯齿的情况下渲染任何文本,以便我可以将图像转换为带有索引颜色的预定义调色板.

我用于渲染的第三方库不支持这个,只是根据字体渲染的当前窗口设置呈现文本.他们还表示他们不太可能在短时间内添加切换抗锯齿功能.

到目前为止,我发现的最好的工作是以这种方式调用第三方库(为简洁起见,省略了错误处理和先前的设置检查):

private static void SetFontSmoothing(bool enabled)
{
    int pv = 0;
    SystemParametersInfo(Spi.SetFontSmoothing, enabled ? 1 : 0, ref pv, Spif.None);
}

// snip
Graphics graphics = Graphics.FromImage(bitmap)
IntPtr deviceContext = graphics.GetHdc();

SetFontSmoothing(false);
thirdPartyComponent.Render(deviceContext);
SetFontSmoothing(true);
Run Code Online (Sandbox Code Playgroud)

这显然对操作系统产生了可怕的影响,每次我渲染图像时,其他应用程序都会从​​禁用的cleartype闪烁到禁用和返回.

所以问题是,有没有人知道如何改变特定DC的字体渲染设置?

即使我可以只进行更改过程或线程而不是影响整个操作系统,这将是向前迈出的一大步!(这样我就可以选择将这个渲染转换为一个单独的进程 - 无论如何都会在渲染后将结果写入磁盘)

编辑:我想补充一点,我不介意解决方案是否比一些API调用更复杂.我甚至会对一个解决方案感到满意,如果它只用了一天工作就会挂钩系统dll.

编辑:背景信息 第三方库使用约70种颜色的调色板渲染.在将图像(实际上是地图图块)渲染到DC之后,我将每个像素从其32位颜色转换回其调色板索引,并将结果存储为8bpp灰度图像.这将作为纹理上传到视频卡.在渲染过程中,我重新应用了调色板(也存储为纹理),并在视频卡上执行了像素着色器.这允许我立即在不同的调色板之间切换和淡入淡出,而不需要重新生成所有需要的切片.生成并上传所有瓷砖需要10-60秒才能获得典型的世界观.

编辑:将GraphicsDevice重命名为图形 此问题的先前版本中的GraphicsDevice类实际上是System.Drawing.Graphics.我重命名了它(使用GraphicsDevice = ...),因为有问题的代码在命名空间MyCompany.Graphics中,编译器无法正确解析它.

编辑:成功! 我甚至设法将PatchIat下面的函数移植到C#的帮助下Marshal.GetFunctionPointerForDelegate..NET互操作团队确实做得非常出色!我现在使用以下语法,其中Patch是一个扩展方法System.Diagnostics.ProcessModule:

module.Patch(
    "Gdi32.dll",
    "CreateFontIndirectA",
    (CreateFontIndirectA original) => font =>
    {
        font->lfQuality = NONANTIALIASED_QUALITY;
        return original(font);
    });

private unsafe delegate …
Run Code Online (Sandbox Code Playgroud)

c# hook winapi gdi cleartype

9
推荐指数
2
解决办法
4416
查看次数

Javascript:负面的lookbehind相当于?

有没有办法在javascript正则表达式中实现相当于负面的lookbehind?我需要匹配一个不以特定字符集开头的字符串.

如果在字符串的开头找到匹配的部分,我似乎无法找到正确执行此操作的正则表达式.负面的看起来似乎是唯一的答案,但javascript没有.

编辑:这是我想要工作的正则表达式,但它没有:

(?<!([abcdefg]))m

所以它会匹配'jim'或'm'中的'm',但不会匹配'jam'

javascript regex negative-lookbehind

133
推荐指数
6
解决办法
7万
查看次数

Kernel.loop方法需要'do'.不允许使用分号?

对于某些构造,我可以选择使用分号或do关键字来分隔语句的结尾,如until下面的示例所示.

until x == 100 do puts x; x+=1 end 

until x == 100; puts x; x+=1 end 
Run Code Online (Sandbox Code Playgroud)

但这是不可能的Kernel.loop.

x=0    
loop do puts x; x+=1; break if x == 100 end

x=0    
loop; puts x; x+=1; break if x == 100 end # => error
Run Code Online (Sandbox Code Playgroud)

这有什么原因吗?

ruby syntax kernel loops

3
推荐指数
1
解决办法
631
查看次数

在Python中使用多处理时应该如何记录?

现在我在框架中有一个中央模块,它使用Python 2.6 multiprocessing模块生成多个进程.因为它使用multiprocessing,所以有模块级多处理感知日志,LOG = multiprocessing.get_logger().根据文档,这个记录器具有进程共享锁,因此您不会sys.stderr通过让多个进程同时写入来解决问题(或任何文件句柄).

我现在遇到的问题是框架中的其他模块不支持多处理.我看到它的方式,我需要使这个中央模块的所有依赖使用多处理感知日志记录.这框架很烦人,更不用说框架的所有客户了.我有没有想到的替代方案?

python logging multiprocessing

213
推荐指数
11
解决办法
11万
查看次数

"处理程序"模式?

我遇到过一种被称为"处理程序模式"的设计模式,但我无法在任何地方找到对这种模式的任何实际引用.它基本上只是一个单方法接口,允许您轻松扩展后端功能,而无需重新编译客户端.对于必须处理许多不同类型请求的Web服务可能很有用.这是一个例子:

public interface IHandler
{
    IDictionary<string, string> Handle(IDictionary<string, string> args);
}
Run Code Online (Sandbox Code Playgroud)

args通常包括一个像"Action"这样的键,其值可以告诉implmentation要做什么.可以传入额外的args以获取更多信息.然后,impl传回客户端"应该"理解的任意args列表.

这是一种反模式,还是伪装的另一种模式?这种设计是推荐的吗?

编辑:更多信息:我看到这个实现的方式,"根"处理程序将作为其他具体处理程序的调度程序(也许?).根处理程序有一个"HandlerResolver",它决定哪个具体的处理程序应该根据它的内容获取消息.也许它实际上就像一个"调度员"模式,虽然我不知道这是否真的是一种模式.我想它也可能在根目录中有一个责任链模式,允许你将一堆具体的处理程序链接在一起,然后让他们决定哪一个会处理它.

.net c# design-patterns

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

我如何知道PDF页面是彩色还是黑白?

给定一组PDF文件,其中一些页面是彩色的,其余的是黑白的,是否有任何程序可以在给定的页面中查找颜色,哪些是黑白?例如,这可以用于打印论文,并且仅花费额外的费用来打印彩色页面.考虑到双面打印的人的奖励积分,并且如果彩色打印机后面是彩色页面,则向彩色打印机发送适当的黑白页面.

pdf parsing automation colors printers

59
推荐指数
3
解决办法
2万
查看次数

Asp.Net MVC无法获取.html文件或.xml文件404错误?

如何返回视图中文件夹中的.html文件或.xml文件?我正在使用jquery通过ajax请求一个静态Html文件并将结果插入div并且它一直给出404错误吗?

谢谢

html c# asp.net-mvc jquery

3
推荐指数
1
解决办法
3066
查看次数

Perl的一些优雅功能或用途是什么?

什么?Perl漂亮吗? 优雅?他一定是在开玩笑!

这是真的,那里有一些丑陋的Perl.有些人,我的意思是很多.我们都看过了.

嗯,这是象征汤.不是吗?

是的,有符号.就像'数学'有'符号'一样.只是我们程序员更熟悉标准的数学符号.我们开始接受母语中的符号,无论是ASM,C还是Pascal.Perl刚决定再多做一些.

好吧,我认为我们应该摆脱所有不必要的符号.使代码看起来更好.

这样做的语言已经存在.它被称为Lisp. (很快,perl 6.)

好的,聪明的家伙.事实是,我已经可以发明自己的符号了.它们被称为功能和方法.此外,我们不想重塑APL.

哦,假冒的另一个自我,你真好笑!这是真的,Perl可以很漂亮.它也可能非常丑陋.使用Perl,TIMTOWTDI.

那么,你最喜欢的Perl代码是什么?

perl

35
推荐指数
9
解决办法
2250
查看次数

在Unix上,查找执行该程序的用户是否为root?

我正在编写一个rake脚本,如果执行rake脚本的用户具有root权限,我想检测(如果可能的话,使用Ruby而不是bash).

如果它不是root,那么我想终止脚本.

ruby unix bash rake ruby-on-rails

23
推荐指数
1
解决办法
4908
查看次数