Skip to content

Commit

Permalink
pin clipboard img
Browse files Browse the repository at this point in the history
  • Loading branch information
xland committed May 19, 2024
1 parent 6510459 commit 203392d
Show file tree
Hide file tree
Showing 8 changed files with 930 additions and 841 deletions.
130 changes: 67 additions & 63 deletions doc/todo.md
Original file line number Diff line number Diff line change
@@ -1,64 +1,68 @@
- 应该把钢笔和直线合并成一个(工具栏)
- Doc改为doc
- 空白的文字框要拖拽,怎么办
- 保存成bmp不好吗
- 每次渲染时临时创建bixmap内存也不迟
- 参考modules\skplaintexteditor\app\editor_application.cpp



- 截图: 保存按钮 希望可以定义默认文件夹, 不用每次都选文件夹
- 当截图区宽度等于屏幕宽度,或高度等于屏幕高度时,没办法再调整截图区域的宽高

- 感觉有点卡,尤其在虚拟机里,恼火
- ShapeEllipse ShapeRect判断鼠标坐标是否移动到元素内,这里可以优化,提前把Path缓存起来
- Cursor的枚举类值得优化,提前Load:HCURSOR hCursor = LoadCursor(nullptr, IDC_ARROW); // 或加载自定义光标资源
- draggerSize设置成静态变量
- 英文文字的测量是由问题的
- 多个屏幕测试,要多测试几轮
- Eraser和Mosaic 是否应继承自Pen


- 别的程序调用,截图后好像获取不到文件保存路径
- Recorder有必要早早的就初始化吗?Get的时候判断,没有再初始化不就完了
- 用del 删除元素
- 辅助线
- GPU SUPPORT


- SK_ENABLE_SKSL 是 Skia 中的一个宏,用于启用或禁用 Skia Shader Language(SKSL)编译器。SKSL 是 Skia 的着色器语言,用于编写图形渲染时使用的着色器代码。
- 看SkiaGUI有使用这玩意儿的示例
- track mouse out window IsMouseDragging IsMouseDown to false



- 整个应用只搞一个Surface,一个Canvas
- 屏幕拍照完成后,就把屏幕照片画在这个Surface上
- 然后saveLayer①,
- 接着在这个layer上绘制mask,toolbar之类得东西
- 动态绘制这些东西时,就执行clear操作,不会影响最底层得屏幕照片
- 完成之后restore,(完蛋,污染了surface了)
- 如果restore了之后,还要改变mask或toolbar,那就重新画一遍屏幕底部得照片
- 然后再saveLayer①,再改变mask或toolbar,
- 动态改变就执行clear操作,同样不会影响最底层得屏幕照片
- 完成之后restore

- 在①完成之后,你可能要绘制历史元素
- 此时没必要再saveLayer
- 只要直接遍历历史元素,直接并把非IsDel的元素都绘制到①创建的layer上即可
- 画完了之后restore
- 当用户点了上一步或者下一步,那么整个surface都要重绘一遍

- 当用户要拖拽绘制一个新元素时
- 不断的saveLayer,clear,draw,restore
- 一旦restore,就会污染surface了
- 然而如果不restore,用户又看不到拖拽绘制的过程



toolbar可以搞一个单独的surface

- 用SaveLayer代替SurfaceFront
- 当开始绘图时,不断的saveLayer,clear,draw,restore
- 实际上始终是画在SurfaceBack上
- 直接钉住剪切板内的图片
- 读取剪切板内的图片


- 应该把钢笔和直线合并成一个(工具栏)
- Doc改为doc
- 空白的文字框要拖拽,怎么办
- 保存成bmp不好吗
- 每次渲染时临时创建bixmap内存也不迟
- 参考modules\skplaintexteditor\app\editor_application.cpp



- 截图: 保存按钮 希望可以定义默认文件夹, 不用每次都选文件夹
- 当截图区宽度等于屏幕宽度,或高度等于屏幕高度时,没办法再调整截图区域的宽高

- 感觉有点卡,尤其在虚拟机里,恼火
- ShapeEllipse ShapeRect判断鼠标坐标是否移动到元素内,这里可以优化,提前把Path缓存起来
- Cursor的枚举类值得优化,提前Load:HCURSOR hCursor = LoadCursor(nullptr, IDC_ARROW); // 或加载自定义光标资源
- draggerSize设置成静态变量
- 英文文字的测量是由问题的
- 多个屏幕测试,要多测试几轮
- Eraser和Mosaic 是否应继承自Pen


- 别的程序调用,截图后好像获取不到文件保存路径
- Recorder有必要早早的就初始化吗?Get的时候判断,没有再初始化不就完了
- 用del 删除元素
- 辅助线
- GPU SUPPORT


- SK_ENABLE_SKSL 是 Skia 中的一个宏,用于启用或禁用 Skia Shader Language(SKSL)编译器。SKSL 是 Skia 的着色器语言,用于编写图形渲染时使用的着色器代码。
- 看SkiaGUI有使用这玩意儿的示例
- track mouse out window IsMouseDragging IsMouseDown to false



- 整个应用只搞一个Surface,一个Canvas
- 屏幕拍照完成后,就把屏幕照片画在这个Surface上
- 然后saveLayer①,
- 接着在这个layer上绘制mask,toolbar之类得东西
- 动态绘制这些东西时,就执行clear操作,不会影响最底层得屏幕照片
- 完成之后restore,(完蛋,污染了surface了)
- 如果restore了之后,还要改变mask或toolbar,那就重新画一遍屏幕底部得照片
- 然后再saveLayer①,再改变mask或toolbar,
- 动态改变就执行clear操作,同样不会影响最底层得屏幕照片
- 完成之后restore

- 在①完成之后,你可能要绘制历史元素
- 此时没必要再saveLayer
- 只要直接遍历历史元素,直接并把非IsDel的元素都绘制到①创建的layer上即可
- 画完了之后restore
- 当用户点了上一步或者下一步,那么整个surface都要重绘一遍

- 当用户要拖拽绘制一个新元素时
- 不断的saveLayer,clear,draw,restore
- 一旦restore,就会污染surface了
- 然而如果不restore,用户又看不到拖拽绘制的过程



toolbar可以搞一个单独的surface

- 用SaveLayer代替SurfaceFront
- 当开始绘图时,不断的saveLayer,clear,draw,restore
- 实际上始终是画在SurfaceBack上
-
82 changes: 41 additions & 41 deletions res/res.rc
Original file line number Diff line number Diff line change
@@ -1,41 +1,41 @@
#include "res.h"

#define APSTUDIO_READONLY_SYMBOLS
#include "winres.h"
#undef APSTUDIO_READONLY_SYMBOLS

IDI_LOGO ICON "logo.ico"
IDR_ICON_FONT ICON_FONT "icon.ttf"

VS_VERSION_INFO VERSIONINFO
FILEVERSION 2,1,4,0
PRODUCTVERSION 2,1,4,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x40004L
FILETYPE 0x1L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "080404b0"
BEGIN
VALUE "CompanyName", "GitHub xland"
VALUE "FileDescription", "ScreenCapture"
VALUE "FileVersion", "2.1.4.0"
VALUE "InternalName", "ScreenCapture.exe"
VALUE "LegalCopyright", "Copyright (C) LiuXiaolun 2023-2024"
VALUE "OriginalFilename", "ScreenCapture.exe"
VALUE "ProductName", "ScreenCapture"
VALUE "ProductVersion", "2.1.4.0"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x804, 1200
END
END
#include "res.h"
#define APSTUDIO_READONLY_SYMBOLS
#include "winres.h"
#undef APSTUDIO_READONLY_SYMBOLS
IDI_LOGO ICON "logo.ico"
IDR_ICON_FONT ICON_FONT "icon.ttf"
VS_VERSION_INFO VERSIONINFO
FILEVERSION 2,1,5,0
PRODUCTVERSION 2,1,5,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x40004L
FILETYPE 0x1L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "080404b0"
BEGIN
VALUE "CompanyName", "GitHub xland"
VALUE "FileDescription", "ScreenCapture"
VALUE "FileVersion", "2.1.5.0"
VALUE "InternalName", "ScreenCapture.exe"
VALUE "LegalCopyright", "Copyright (C) LiuXiaolun 2023-2024"
VALUE "OriginalFilename", "ScreenCapture.exe"
VALUE "ProductName", "ScreenCapture"
VALUE "ProductVersion", "2.1.5.0"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x804, 1200
END
END
Loading

0 comments on commit 203392d

Please sign in to comment.