自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(98)
  • 资源 (5)
  • 收藏
  • 关注

原创 mupdf源码分析(九)显示之小部件渲染

本章主要介绍mupdf标注渲染,接口是fz_run_page_annots ,下面是具体实现过程。接口说明请参考上一章的fz_run_page_contents接口。接口实现是通过pdf_run_page_annots->pdf_run_page_annots_with_usage接口实现。

2021-06-02 11:28:45 6

原创 mupdf源码分析(八)显示之标注渲染

本章主要介绍mupdf标注渲染,接口是fz_run_page_annots ,下面是具体实现过程。接口说明请参考上一章的fz_run_page_annots

2021-06-02 11:11:15 8

原创 mupdf源码分析(七)显示之页面渲染

本章主要分析mupdf页面内容的渲染,接口是fz_run_page_contents,下面将详细介绍这个接口。接口声明/**接口说明:在一个设备上渲染一个页面。只有主页内容,没有注释* page 页面对象*dev 渲染设备对象* transform 转换矩阵* cookie 与调用方的通信机制*/void fz_run_page_contents(fz_context *ctx, fz_page *page, fz_device *dev, fz_matrix tra..

2021-06-01 18:15:57 14

原创 mupdf源码分析(六)显示之大致流程

这一章主要描述了mupdf渲染页面资源,标注,和小部件的大致流程,详细流程将在后面的章节详细描述。1,渲染页面资源1.1)创建空页面显示链表 fz_display_list 对象,app->page_list = fz_new_display_list(app->ctx, fz_infinite_rect);1.2)为页面显示链表创建渲染设备 fz_device对象mdev = fz_new_list_device(app->ctx, app->page_list);具.

2021-06-01 15:45:31 22

原创 mupdf源码分析(五)加载文档之页面加载

这一章将详细讲解 fz_load_page接口的实现流程。此接口主要实现了根据页面索引加载指定页面资源,填充fz_page对象。1,获取文档章节数fz_count_chapters(ctx, doc);//n = 12,计算每个章节的页码数,int m = fz_count_chapter_pages(ctx, doc, i);3,加载页面资源,fz_load_chapter_page(ctx, doc, i, number - start);3.1)遍历所有已加载的页面链表 f...

2021-06-01 15:14:56 20

原创 PDF之文档结构

PDF 文档可被视为 PDF 文件正文部分所包含的对象层次结构。在层次结构的根部,是文档目录字典,可通过 PDF 文件的尾注中的 Root 条目定位。目录包含对定义文档内容、大纲、文章线索、已命名目标和其他属性的其他对象的引用。 ...

2021-04-08 17:28:37 26

原创 PDF之文件结构

PDF文件应有以下四个元素构成:1)一行文件头,标识文件所符合的PDF规范版本。2)正文,包含了组成文件中所含文档的对象。3)一个交叉引用表,包含关于文件中间接对象的信息。4)尾注提供交叉引用表和文件正文某些特殊对象的位置。1,文件头,PDF 文件的第一行应是一个文件头,包含 5 个字符 %PDF- ,后跟 1.N 形式的版本号,其中 N 是 0 到7 之间的数字。如果 PDF 文件包含二进制数据,大多数文件都是这样,那么文件头行之后应紧跟一个注释行,其中包含至少 4 个二进制字符,

2021-04-07 15:56:17 18

原创 PDF之过滤器简介

过滤器,在读取流数据时的一个选项是用过滤器对它进行解码,生成原始的未编码数据。流的一个或多个过滤器应由流字典中的Filter条目指定,过滤器可以级联,通过依次执行两次或者多次编码转换形成传递流的管道。示例:/Filter [/ASCII85Decode /LAWDecode]。标准过滤器包括:ASCIIHexDecode,ASCII85Decode,LZWDecode,FlateDecode,RunLengthDecode,CCITTFaxDecode,JBIG2Decode,DCTDecode,JPX

2021-04-07 10:10:31 45

原创 PDF之基本对象类型

PDF包含8种基本的对象类型:布尔值,整型和实数,字符串,名称,数组,字典,流,null对象。1,布尔对象,布尔对象表示真和假的逻辑值。显示为关键字true和false。2,数字对象,PDF提供了两种类型的数字对象:整型和实数。整数对象表示数学上的整数,书写为一个或多个十进制数,可选择在前面添加一个符号,示例:123,4123,+19,-98,0。实数对象表示数学上的实数,书写为一个或多个带有可选的正负号,以及一个前导,结尾或嵌入的句点(小数点)的十进制数,示例:34.5,-3.63,+123.6,

2021-04-06 17:35:00 55

原创 #define 定义多行

今天项目中需要定义一个宏,展示多行代码。#define 定义一行很简单,定义多行还是有点麻烦的,下面根据代码讲解我遇到的一些坑。自定义结构体InternalTimetypedefstructInternalTime{structtimevaltimeStart;structtimevaltimeEnd;}InternalTime;1,定义一行#defineGetStartTime(internalTime)gettimeofday(&amp...

2021-03-30 17:01:02 34

原创 十六进制RGB分色值转unsigned int

现在需要将R,G,B 三个分量的值成一个unsigned int 型的RGB值。int colorR = 255;int colorG = 254;int colorB = 253;unsigned int color = 0;color = colorR<<16&0xff0000;color += colorG<<8&0x00ff00;color += colorB&0x0000ff;...

2021-03-25 18:49:59 17

原创 十六进制字符串转整型

最近做个项目需要将十六进制字符串转成整型,具体实现如下:1,字符串统一转小写int tolower(int c) { if (c >= 'A' && c <= 'Z') { return c + 'a' - 'A'; } else { return c; } } 2,字符串转整型int htoi(char s[]) { int ...

2021-03-25 18:37:00 74

原创 mupdf源码分析(四)加载文档之文档初始化并加载交叉引用表

这一章将详细分析一下pdf_init_document(fz_context *ctx, pdf_document *doc)接口的内部调用逻辑。此接口主要实现文档初始化并加载交叉引用表的功能。1,解析文档版本 范围:1.0-1.7 ,pdf_load_version(ctx, doc);//操作文件流,读取首行解析文档版本2,如果线性文件标志为真,加载线性文件,pdf_load_linear(ctx, doc);后续章节会详细介绍线性文件过程。3,判断是否是线性文件,pdf_check_li.

2021-03-15 14:32:07 61

原创 mupdf源码分析(三)加载文档之详细流程

pdf文档的加载流程由pdfapp_open----》pdfapp_open_progressive接口实现,原型:void pdfapp_open_progressive(pdfapp_t *app, char *filename, int reload, int kbps);接下来具体分析一下这个函数的实现流程。1,注册处理程序为支持的所有标准文档类型fz_register_document_handlers(ctx);//支持pdf,xps,svg,cbz,img,fb2,html,x..

2021-03-12 18:15:47 107

原创 vc 打开文件对话框获取选择文件路径

#include<Windows.h>int getfilename(wchar_t *buf, int len){ OPENFILENAME ofn; buf[0] = 0; memset(&ofn, 0, sizeof(OPENFILENAME)); ofn.lStructSize = sizeof(OPENFILENAME); ofn.hwndOwner = NULL;//窗体父类 ofn.lpstrFile = buf;//文...

2021-03-03 11:37:12 35

原创 win32 获取系统dpi

#include <windows.h>//获取系统dpiint get_system_dpi(void){ //加载系统库user32.dll HMODULE hUser32 = LoadLibrary(TEXT("user32.dll")); SetProcessDPIAwareFn *ptr; int hdpi, vdpi; HDC desktopDC; //获取SetProcessDPIAware系统函数地址 ptr ...

2021-03-03 11:28:32 75 1

原创 mupdf源码分析(二)加载文档大致流程

mupdf源码工程是以vs2015为蓝本的,mupdf版本为1.18.0。一,入口函数:int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)。二,获取系统dpi:int displayRes = get_system_dpi();三,创建fz_context 对象:ctx = fz_new_context(NULL, NULL, FZ_STORE_DEFAU.

2021-03-03 11:18:41 96

原创 mupdf源码分析(一)简介

1.概述 MuPDF是一个轻量级的pdf,xp和电子书阅读器。 MuPDF是一个跨平台的软件,可以在windows,linux和国产化平台下运行。 MuPDF由依赖的各种软件库,命令行工具和查看器组成。2.优势 小巧,快速,完整: 软件功能简单,满足各种文档格式,如PDF,XPS,OpenXPS,CBZ,EPUB等。 软件页面渲染速度快。 不需要依赖其他的软件和平台,单独可以完成文档的阅读功能。3.libmuf库 此模块是Mupdf实现...

2020-07-30 17:07:16 213

原创 jni 交叉编译 android 平台下使用

一,准备工作:1)下载android ndk包,解压2)下载交叉编译工具链 1,cd ./android-ndk-r15c 2,./build/tools/make-standalone-toolchain.sh --package-dir=/home/fxb/open_source/ndk_tools/ --toolchain=arm-linux-androideabi-4.8 3,tar xjvf arm-linux-androideabi.tar.bz2 ...

2020-05-29 17:30:11 139

原创 curl CURLOPT_WRITEDATA CURLOPT_WRITEFUNCTION 回调函数

最近用libcurl开源库做了一个项目,关于接收请求返回数据的回调函数,是我的一点想法。1,curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, HttpPostWriteBack);HttpPostWriteBack是回调函数指针,需要自己实现原型为:unsigned int HttpPostWriteBack(void *contents, siz...

2019-10-15 18:01:37 1416

原创 磅 英寸 厘米 dpi 像素

概念:1,磅:是印刷设计中文字大小的单位point的音译,中文正确翻译为“点”,缩写为pt。物理单位,1pt = 1/72英寸2,英寸:英寸(吋)是使用于联合王国(UK,即英国(英联邦)及其前殖民地的长度单位,在英制里,12英寸为1英尺,36英寸为1码。 物理单位,1in=2.54cm3,厘米:一个长度计量单位,等于一米的百分之一。物理单位,1cm=1/2.54in4,dpi:图像...

2019-07-19 15:58:38 255

原创 QMessageBox::warning ok 确定

QMessageBox::warning(this,tr("tip"),tr("page has rotated,please recorver the angle"),tr("Ok"));QMessageBox::warning(this,tr("tip"),tr("page has rotated,please recorver the angle"),QStringLiteral("确定...

2019-07-19 15:22:32 1098

原创 QPainter QPixmap 抗锯齿

在paintEvent(QPaintEvent *)实现函数里绘制图片出现边缘锯齿解决办法:pixmap.loadFromData(sealImage,sealImageLen);pixmap = pixmap.scaled(w, h, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);painter.setRenderHints(...

2019-07-19 15:16:55 2334 1

原创 QT 国际化

QT 实现国际化步骤:一,将要实现国际化的字符串tr()包裹,ex:二,在.pro添加相应的翻译文件:TRANSLATIONS += Resources/qm/zh.ts \ Resources/qm/en.ts三,点击“工具-》外部-》QT预言家-》更新翻译”,生成相应的en.ts和zh.ts四,编辑相应的zh.ts文件,ex:五,点击...

2019-07-19 15:06:08 68

原创 OCX skipping event interface _XXX_AXEvents 事件处理

最近做签章客户端的项目,需要调用外部提供的ocx插件,界面框架为QT。ocx控件QT进行调用没有问题 ,在skipping event interface _XXX_AXEvents 遇到了拦路虎,怎么处理能接收到ocx发出的一些信号呢?因为我有c#调用OCX的源码,可以看到事件的接口参数,QT 的消息机制是信号和槽,所以我就在想,在QT框架内,事件就相当于信号,我只需要根据参数 实现相...

2019-07-05 10:44:38 143

原创 libcurl http请求的例子

size_t req_reply(void *ptr, size_t size, size_t nmemb, void *stream){ std::string *str = (std::string*)stream; (*str).append((char*)ptr, size*nmemb); return size * nmemb;} std::s...

2019-04-09 16:51:31 327

原创 libcurl源码下载及编译

1,libcurl源码下载地址https://curl.haxx.se/download.html2,打开CMake 工具,输入源码目录以及要生成的工程工程目录3,点击“Configure”,配置选项4,然后一路下去,进行一系列的配置(可能会出现警告,配置时间比较长请耐心等待)5,配置完成后,点击“Generate”,就可以生成相应的工程了。6,打开生成的工程...

2019-04-09 16:27:04 4359

原创 QDialog 去掉标题栏问号按钮

Qt::WindowFlags flags=Qt::Dialog;flags |=Qt::WindowCloseButtonHint;setWindowFlags(flags);

2019-04-09 16:04:17 4383

原创 c语言读写二进制文件

1,写二进制文件:FILE *f_out= NULL;//声明文件句柄f_out= fopen("c://aaa.txt","wb");//打开文件句柄if(f_out == NULL) return;fwrite(dataArray,sizeof(unsigned char),count,f_out);//写数据,参数:源数据,块大小,数据长度,文件句柄f...

2019-04-03 14:12:33 5128

原创 QPrinter QPrintDialog QPrintPreviewDialog 打印PDF文件

近期做了一个项目,这个项目需要调用QT 的通用接口实现跨平台打印pdf文件,遇到了一些坑特此纪录一下。1, QPrinter printer(QPrinter::ScreenResolution);//构造打印对象 printer.setPageSize(QPrinter::A4);//页面设置 printer.setOrientation(QPrinter::Port...

2019-03-29 14:16:47 1787

转载 关于QT中奇数个汉字出现newline in constant的错误

前面写了一篇关于QT中使用汉字的博客以为对汉字的使用了如指掌, 没想到今天把字符串一换, 换成偶数个没问题, 换成奇数个汉字, 哇擦, 报一个错误newline in constant, 瞬间意识到自己还是太年轻.好了, 开始正题先说下 在QT Creator可能出现的乱码的情况:1. 打开文件时, 汉字就是乱码, 这种情况是因为你向文件写汉字的时候,文件是一套编码(比如GB2312)...

2019-02-26 16:09:44 485

转载 Linux 系统下 CodeBlocks安装与使用

1.安装1)sudo add-apt-repository ppa:damien-moore/codeblocks-stable输入密码后,会提示你敲【Enter】继续,然后如果一切OK的话,就会安装好这个ppa源。继续敲:2)sudo apt-get update对源进行更新,这个过程会下载一些东西,请保持网络畅通。最后,开始安装:3)sudo apt-get install cod...

2019-01-03 14:24:12 832

原创 QT 调用OCX控件

近期做一个项目,需要调用Foxit的PDF OCX控件,现记录一下过程。首先,被调用的OCX控件必须被注册,注册过程请参考https://mp.csdn.net/postedit/85101655。接着进行如下步骤:一,获取OCX 的uuid:     1)找到oleview.exe,以管理员身份打开。oleview..exe一般路径C:\Program Files (x86)\W...

2018-12-19 17:40:14 2858

原创 ocx控件注册和解除注册

解除注册:                                                                                                                     解除成功注册OCX控件:                                                    ...

2018-12-19 17:11:19 3279

原创 VS2015 不支持 vs-addin

由于vs2015以后的版本不再支持addin插件,所以QT VS-addin就没用了,vs提供了新的替代插件Qtpackage,https://marketplace.visualstudio.com/items?itemName=havendv.QtPackage 

2018-11-14 16:27:32 997

原创 构造函数和析构函数小结

构造函数是一种特殊的类成员函数,在创建类对象时被调用。构造函数的名称和类名相同,但通过函数重载,可以创建多个同名的构造函数,条件是每个函数的参数列表都不同。构造函数没有声明类型。Bozo(const char *fname,const char *name);//构造函数原型初始化新对象:1. Bozo bozettoa = Bozo("Bozetta","Biggens");2....

2018-11-13 17:53:38 146

原创 TortoiseSVN文件夹及文件不显示图标

最近安装了一些软件,突然发现原先使用的svn归档文件夹没有了svn版本控制的一些图标非常不舒服,查了一些资料,解决方案如下1)win + R 输入regedit 打开注册表管理器2)按照指示找到下列位置 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayId...

2018-11-13 14:44:26 293

原创 vs2015:提升应用程序为管理员权限

有些应用程序运行需要管理员权限,最好在打包的时候提升为管理员运行。步骤如下:1.右键打开属性对话框2.打开linker--&gt;Manifest File3.编辑 UAC Execution Level 4.选择 最后一项OK,结束...

2018-11-08 09:56:54 2820

原创 QThread用法:启动与退出

QThread 有两种用法:一,运用 QObject::moveToThread(QThread *targetThread)将功能类移入到线程QThread中例子如下:class Worker : public QObject {//创建普通的对象类    Q_OBJECT    public slots:        void doWork(const QString ...

2018-11-07 09:13:19 7368

原创 strtok 详解及实现

1)strtok 头文件&lt;string.h&gt;2)原型 :char *strtok(char *str,const char *delimiters)3)功能:切割字符串str,将str分割成以delimiters为分割点的一个个字串,并返回4)用法:       char str[128] = "hello@world@I@love@you";        char...

2018-11-05 11:45:27 2361

getopt源码,32,64库

getopt库,包含源码,32位库,64位库。getopt库主要用于QRencode库的生成。经过亲自测试使用,运行正常。

2018-01-03

zlib源码,32,64位库

zlib库,包含源码,32位库,64位库。zlib库主要用于QRencode库的生成。

2018-01-03

pkcs#7- 加密消息语法标准 - 中英双版.zip

PKCS #7:加密消息语法标准,这一标准描述了待加密数据的一般语法,比如数字签名和数字信封。该语法允许递 归,如一个信封能够包含在另一个当中,或者一方能够对一已存在的封装数据进行 签名。它也允许专有的属性和消息的内容一起被鉴别,比如签名时间,并且提供其 他属性如伴随着签名的连属(countersignature)。该语法的一个简化版提供了发布证 书和CRL的方法。

2020-03-04

qrencode源码,32,64位库

qrencode库,包含源码,32位库,64位库。qrencode库主要用于二维码的生成。

2018-01-03

libpng源码,32,64库

libpng库,包含源码,32位库,64位库。libpng库主要用于QRencode库的生成。这些库经过测试是可用的。

2018-01-03

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除