工作笔记
firebolt2002
这个作者很懒,什么都没留下…
展开
-
WinXP下编译ffmpeg
今天开始编译ffmpeg这个让人爱恨交加的东西了。由于VC++并非是一个标准的C编译器,所以ffmpeg使用的C99以及at&t汇编语法在VC下无法编译通过,我曾经从ffmpeg中提取过h263++的编码器,在不使用mmx优化选项的情况下,对C代码进行少许的改动还是能够编译通过和正常使用的,但是没有MMX优化的东西使用起来还是不爽的。 采用MINGW在window平台下编译f原创 2005-12-22 02:35:00 · 7547 阅读 · 4 评论 -
QGraphicsView 框架学习(四),Undo Redo
撤销,重做,任何编辑器的必备工具。还是Qt的提供的标准解决方案。QUndoCommand;QUndoStack;QUndoView;图形编辑的每一个动作都应该有相应的撤销和重做机制。我们为每个动作派生一个对象。Qt demo里提供了两个例子,一个是使用QGraphic是View图形框架的,一个是Qt自己写的一个简单的图形编辑器。这两个都可以参考。这里简单的描述一下我自己抄来的。原创 2015-07-05 12:50:58 · 2101 阅读 · 0 评论 -
QGraphicsView 框架学习(五) 边框与控制点。
选择控制以前已经实现了,为矩形对象默认添加了8个控制点,可以通过鼠标移动控制点,调整图形的大小。多边形,直线,曲线等没有提供这8个控制点,而是直接将每个输入点当做控制点,实际上也应该给它加一个边框。 这两天看了一下著名的inkspace,它提供了一个SelTrans对象来对图元进行缩放,拉伸,旋转,扭曲等操作;还提供了 control_point对象,来控制图元path,改变图元形态原创 2015-07-05 14:43:04 · 2913 阅读 · 0 评论 -
QGraphicsView 框架学习(六) 设计问题
书到用时方恨少啊,遇到一个设计问题,为了给QGraphicsItem添加一些特性,比如给它们添加一个选择框,提供resize操作,前面用的方法是子类化这个类,现在发现这个方法挺麻烦的。赶快翻书,《设计模式》给出了Adapter等结构模式,《设计模式新思维》给出了模板实现设计模式的方法,目前的问题是尽量利用Qt提供的现成的类,尽量复用现有的工具,那么就 Adapter+template吧。可是问题又来原创 2015-07-06 17:46:29 · 2258 阅读 · 0 评论 -
QGraphicsView 框架学习(一)、图形元素的编辑
一、给图形对象加控制点,用户通过鼠标来操作控制点来编辑图形,参考MFC drawcli的实现。很多人通过QGraphicsItem的派生类,然后重载几个函数来处理鼠标消息: void mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent) Q_DECL_OVERRIDE; void mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent) Q_DECL_OVERRIDE; void原创 2015-06-21 21:19:29 · 11008 阅读 · 5 评论 -
linux 位操作c语言
Linux 内核 bitops 非原子操作实现。static inline void set_bit(int bit, volatile unsigned long *addr){ unsigned long mask = BIT_MASK(bit); unsigned long *p = ((unsigned long *)addr) + BIT_WORD(bit);原创 2016-11-26 10:04:43 · 934 阅读 · 0 评论 -
在c#中使用opencv的一种方法
一直没怎么用过c#做开发,加上这次一共用c#做过两个程序,第一个是关于修改网页的,用C#结合com组件还是很方便的。这次帮别人demo一个用c#实现图片裁剪和半透明融合的功能演示程序。功能挺简单的,就是把一张固定大小的图片先做边缘羽化,然后贴到一个圆形泡泡形状的底图上,最后把结果半透明融合到一张背景图上。C#实现图像的羽化、将图片裁剪复制到一个圆形图片这些都挺简单的,最后一步融合到背景图上需要...原创 2017-12-23 12:11:15 · 21856 阅读 · 11 评论 -
Mac下使用arm-linux-gnueabihf交叉编译openssl方法
1、先下载openssl源码https://github.com/openssl/openssl/archive/master.zip2、解压缩后进入源码目录执行./Configure linux-armv4 no-asm shared --prefix=/Volumes/work/opt/openssl/生成Makefile文件3、编译源码make CROSS_C...原创 2018-03-25 20:02:22 · 1808 阅读 · 0 评论 -
lua交叉编译到arm-linux上。
最近要做一个arm平台的通讯控制器,需要通过modbus采集数据并做PID控制。PID控制打算通过C程序嵌入外部脚本来执行,lua是一个很不错的选择,只需要c程序提供读写内部数据的接口给lua脚本调用就可以了。不过lua源代码没有提供arm-linux编译配置,没关系,自己加一个就可以了。1、lua源代码可以直接从官网下载http://www.lua.org/download.html2、...原创 2018-04-03 20:00:45 · 2451 阅读 · 0 评论 -
Macos 编译SpiderMonkey1.8
源码下载地址:http://ftp.mozilla.org/pub/mozilla.org/js/js-1.8.0-rc1.tar.gz解压后进入src目录运行 make -f Makefile.ref报错如下:2 warnings generated.cc -o Darwin_DBG.OBJ/jsprf.o -c -Wall -Wno-format -MMD -g3 -DXP...原创 2018-08-22 12:00:18 · 687 阅读 · 1 评论 -
QGraphicsView 框架学习(三),图形对象的剪贴板操作。
图形编辑必备功能,剪贴板。Qt本身提供 QClipboard 对象,它使用也很方便,有轮子就不用自己造轮子,不说废话,我们需要利用QMimeData对象来存储我们的图形元素,所以我们要声明一个QMimeData的派生类。原创 2015-07-05 12:14:26 · 2656 阅读 · 3 评论 -
QGraphicsView 框架学习(二),组合与撤销组合
QGraphicsItemGroup 是Qt二维图形框架提供的对图元进行组合操作的类。它提供了了void addToGroup(QGraphicsItem * item) 和 void removeFromGroup(QGraphicsItem *);两个方法。实际使用中可以通过 scene的createItemGroup()方法来创建组合对象,通过destroyItemGroup方法撤销组合。看原创 2015-07-05 09:22:31 · 5031 阅读 · 1 评论 -
VC.NET中的事件响应
在Java和C#中都有事件的概念,可以比较方便的实现消息响应。在C++中要实现消息响应,都是通过回调函数实现。如果某个事件有多个处理函数的话,就需要手动维护一个回调函数列表。Visual C++ .Net 中增加了事件处理机制,称为统一事件模型(Unified Event Model ),可以非常方便地实现消息响应,MSDN中对这个专题有专门的介绍:Event Handling in Visual转载 2006-05-11 16:47:00 · 1512 阅读 · 0 评论 -
定义const 型指针
有三种方法来定义const 型指针: (1)const *; 该语句的作用是:定义指针变量所指数据值为常量,即:指针变量所指数据值不能改变,但指针变量值可以改变。例如: float x,y; const float *p=&x; //定义指针变量p所指数据值*p为常量 *p=25; //错误,p所指变量x数据值不能用*p形式进行改变 p=&y; //正确,可改指针变量原创 2006-04-11 23:45:00 · 1394 阅读 · 0 评论 -
C++类型转换操作符(cast operator)
dynamic_cast 用以转换多态类型(polymorphic type).建立运行时检查将保证转换的有效性。如果该转换不是安全的,则抛出一个bad_cast异常。 static_cast 用以转换非多态类型。没有运行时检查。 const_cast 用以除去一个对象的常态(constness)和易失态(volatileness). reinterpret_cast 用以转载 2006-04-11 23:49:00 · 2096 阅读 · 0 评论 -
#if 0 #endif的含义
srcString = contentarea.value; srcString = ubbReplace(srcString, all); document.write(srcString); srcString = signaturearea.value; showSign(srcString); #i原创 2006-04-11 23:52:00 · 2052 阅读 · 0 评论 -
关于名字空间namespace
srcString = contentarea.value; srcString = ubbReplace(srcString, all); document.write(srcString); srcString = signaturearea.value; showSign(srcString); na转载 2006-04-11 23:54:00 · 1101 阅读 · 0 评论 -
MinGW相关概念
srcString = contentarea.value; srcString = ubbReplace(srcString, all); document.write(srcString); srcString = signaturearea.value; showSign(srcString); Mi转载 2006-04-11 23:59:00 · 1710 阅读 · 2 评论 -
关于类型转换
遇到这样一段代码: const char *fun() {return 1;} operator const char *() { return fun(); } 一种方法是: class Test { public: operator const char*() { return (const char*)1; } }; int _tmain(int argc, _TCHAR* argv[])原创 2006-04-11 23:51:00 · 1005 阅读 · 0 评论 -
解析#pragma指令
在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。 其格式一般为: #Pragma Para 其中Para 为参数,下面来看一些常用的参数。转载 2006-04-11 23:48:00 · 966 阅读 · 0 评论 -
关于far*指针
srcString = contentarea.value; srcString = ubbReplace(srcString, all); document.write(srcString); srcString = signaturearea.value; showSign(srcString); FA转载 2006-04-11 23:53:00 · 1480 阅读 · 0 评论 -
MSDN处理异常的例子
/ srcString = contentarea.value; srcString = ubbReplace(srcString, all); document.write(srcString); srcString = signaturearea.value;原创 2006-04-11 23:56:00 · 1087 阅读 · 0 评论 -
用C++对Duktape JavaScript引擎的简单封装。
Duktape是款比较小巧的JavaScript引擎,适用于嵌入式系统,不过API使用不太方便,研究了两天决定放弃。下面把测试代码上来,做个备忘吧。duktape_helper.hpp文件#ifndef DUKTAPE_HELPER_HPP#define DUKTAPE_HELPER_HPP#include <memory>#include <string>...原创 2018-08-25 11:21:07 · 2253 阅读 · 0 评论