Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
carrotech
doodle
提交
ac1b3454
D
doodle
项目概览
carrotech
/
doodle
与 Fork 源项目一致
从无法访问的项目Fork
通知
5
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
doodle
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
ac1b3454
编写于
7月 18, 2018
作者:
H
huangziwei
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
删除CopyColor,完善IPen、IShape定义
上级
8d839c83
变更
12
显示空白变更内容
内联
并排
Showing
12 changed file
with
102 addition
and
86 deletion
+102
-86
graffiti/src/main/java/cn/hzw/graffiti/CopyLocation.java
graffiti/src/main/java/cn/hzw/graffiti/CopyLocation.java
+1
-1
graffiti/src/main/java/cn/hzw/graffiti/GraffitiActivity.java
graffiti/src/main/java/cn/hzw/graffiti/GraffitiActivity.java
+1
-1
graffiti/src/main/java/cn/hzw/graffiti/GraffitiColor.java
graffiti/src/main/java/cn/hzw/graffiti/GraffitiColor.java
+25
-8
graffiti/src/main/java/cn/hzw/graffiti/GraffitiCopyColor.java
...fiti/src/main/java/cn/hzw/graffiti/GraffitiCopyColor.java
+0
-61
graffiti/src/main/java/cn/hzw/graffiti/GraffitiOnTouchGestureListener.java
.../java/cn/hzw/graffiti/GraffitiOnTouchGestureListener.java
+1
-1
graffiti/src/main/java/cn/hzw/graffiti/GraffitiPath.java
graffiti/src/main/java/cn/hzw/graffiti/GraffitiPath.java
+5
-4
graffiti/src/main/java/cn/hzw/graffiti/GraffitiPen.java
graffiti/src/main/java/cn/hzw/graffiti/GraffitiPen.java
+32
-1
graffiti/src/main/java/cn/hzw/graffiti/GraffitiShape.java
graffiti/src/main/java/cn/hzw/graffiti/GraffitiShape.java
+6
-0
graffiti/src/main/java/cn/hzw/graffiti/GraffitiView.java
graffiti/src/main/java/cn/hzw/graffiti/GraffitiView.java
+1
-1
graffiti/src/main/java/cn/hzw/graffiti/core/IGraffitiColor.java
...ti/src/main/java/cn/hzw/graffiti/core/IGraffitiColor.java
+6
-6
graffiti/src/main/java/cn/hzw/graffiti/core/IGraffitiPen.java
...fiti/src/main/java/cn/hzw/graffiti/core/IGraffitiPen.java
+18
-2
graffiti/src/main/java/cn/hzw/graffiti/core/IGraffitiShape.java
...ti/src/main/java/cn/hzw/graffiti/core/IGraffitiShape.java
+6
-0
未找到文件。
graffiti/src/main/java/cn/hzw/graffiti/CopyLocation.java
浏览文件 @
ac1b3454
...
...
@@ -109,7 +109,7 @@ public class CopyLocation {
/**
* 判断是否点中
*/
public
boolean
isInIt
(
float
x
,
float
y
,
float
mPaintSize
)
{
public
boolean
contains
(
float
x
,
float
y
,
float
mPaintSize
)
{
if
((
mX
-
x
)
*
(
mX
-
x
)
+
(
mY
-
y
)
*
(
mY
-
y
)
<=
mPaintSize
*
mPaintSize
)
{
return
true
;
}
...
...
graffiti/src/main/java/cn/hzw/graffiti/GraffitiActivity.java
浏览文件 @
ac1b3454
...
...
@@ -641,7 +641,7 @@ public class GraffitiActivity extends Activity {
mColorContainer
.
setVisibility
(
View
.
VISIBLE
);
mTouchGestureListener
.
setSelectedItem
(
null
);
mGraffiti
.
setPen
(
GraffitiPen
.
COPY
);
mGraffiti
.
setColor
(
new
GraffitiCo
pyCo
lor
(
mGraffiti
.
getBitmap
()));
mGraffiti
.
setColor
(
new
GraffitiColor
(
mGraffiti
.
getBitmap
()));
mPaintSizeBar
.
setProgress
((
int
)
(
DEFAULT_COPY_SIZE
*
mGraffiti
.
getSizeUnit
()));
}
mDone
=
true
;
...
...
graffiti/src/main/java/cn/hzw/graffiti/GraffitiColor.java
浏览文件 @
ac1b3454
...
...
@@ -8,14 +8,11 @@ import android.graphics.Shader;
import
cn.hzw.graffiti.core.IGraffitiColor
;
import
cn.hzw.graffiti.core.IGraffitiItem
;
import
cn.hzw.graffiti.core.IGraffitiPen
;
import
cn.hzw.graffiti.util.DrawUtil
;
/**
* 涂鸦画笔颜色,用于手绘
*
*/
public
class
GraffitiColor
implements
IGraffitiColor
{
public
class
GraffitiColor
implements
IGraffitiColor
{
public
enum
Type
{
COLOR
,
// 颜色值
...
...
@@ -25,6 +22,7 @@ public class GraffitiColor implements IGraffitiColor{
private
int
mColor
;
private
Bitmap
mBitmap
;
private
Type
mType
;
private
Matrix
mMatrix
;
// bitmap相关
private
Shader
.
TileMode
mTileX
=
Shader
.
TileMode
.
MIRROR
;
...
...
@@ -36,12 +34,15 @@ public class GraffitiColor implements IGraffitiColor{
}
public
GraffitiColor
(
Bitmap
bitmap
)
{
mType
=
Type
.
BITMAP
;
mBitmap
=
bitmap
;
this
(
bitmap
,
null
);
}
public
GraffitiColor
(
Bitmap
bitmap
,
Matrix
matrix
)
{
this
(
bitmap
,
matrix
,
Shader
.
TileMode
.
MIRROR
,
Shader
.
TileMode
.
MIRROR
);
}
public
GraffitiColor
(
Bitmap
bitmap
,
Shader
.
TileMode
tileX
,
Shader
.
TileMode
tileY
)
{
public
GraffitiColor
(
Bitmap
bitmap
,
Matrix
matrix
,
Shader
.
TileMode
tileX
,
Shader
.
TileMode
tileY
)
{
mType
=
Type
.
BITMAP
;
mMatrix
=
matrix
;
mBitmap
=
bitmap
;
mTileX
=
tileX
;
mTileY
=
tileY
;
...
...
@@ -54,6 +55,7 @@ public class GraffitiColor implements IGraffitiColor{
paint
.
setColor
(
mColor
);
}
else
if
(
mType
==
Type
.
BITMAP
)
{
BitmapShader
shader
=
new
BitmapShader
(
mBitmap
,
mTileX
,
mTileY
);
shader
.
setLocalMatrix
(
mMatrix
);
paint
.
setShader
(
shader
);
}
}
...
...
@@ -68,13 +70,28 @@ public class GraffitiColor implements IGraffitiColor{
mBitmap
=
bitmap
;
}
public
void
setColor
(
Bitmap
bitmap
,
Shader
.
TileMode
tileX
,
Shader
.
TileMode
tileY
)
{
public
void
setColor
(
Bitmap
bitmap
,
Matrix
matrix
)
{
mType
=
Type
.
BITMAP
;
mMatrix
=
matrix
;
mBitmap
=
bitmap
;
}
public
void
setColor
(
Bitmap
bitmap
,
Matrix
matrix
,
Shader
.
TileMode
tileX
,
Shader
.
TileMode
tileY
)
{
mType
=
Type
.
BITMAP
;
mBitmap
=
bitmap
;
mMatrix
=
matrix
;
mTileX
=
tileX
;
mTileY
=
tileY
;
}
public
void
setMatrix
(
Matrix
matrix
)
{
mMatrix
=
matrix
;
}
public
Matrix
getMatrix
()
{
return
mMatrix
;
}
public
int
getColor
()
{
return
mColor
;
}
...
...
graffiti/src/main/java/cn/hzw/graffiti/GraffitiCopyColor.java
已删除
100644 → 0
浏览文件 @
8d839c83
package
cn.hzw.graffiti
;
import
android.graphics.Bitmap
;
import
android.graphics.BitmapShader
;
import
android.graphics.Matrix
;
import
android.graphics.Paint
;
import
android.graphics.Shader
;
import
cn.hzw.graffiti.core.IGraffitiColor
;
import
cn.hzw.graffiti.core.IGraffitiItem
;
/**
* 涂鸦画笔颜色,底图为一张图片,可偏移底图位置,用于仿制
*/
public
class
GraffitiCopyColor
implements
IGraffitiColor
{
// bitmap相关
private
Shader
.
TileMode
mTileX
=
Shader
.
TileMode
.
MIRROR
;
private
Shader
.
TileMode
mTileY
=
Shader
.
TileMode
.
MIRROR
;
// 镜像
private
Bitmap
mBitmap
;
private
Matrix
matrix
=
new
Matrix
();
public
GraffitiCopyColor
(
Bitmap
bitmap
)
{
this
(
bitmap
,
Shader
.
TileMode
.
MIRROR
,
Shader
.
TileMode
.
MIRROR
);
}
public
GraffitiCopyColor
(
Bitmap
bitmap
,
Shader
.
TileMode
tileX
,
Shader
.
TileMode
tileY
)
{
mBitmap
=
bitmap
;
mTileX
=
tileX
;
mTileY
=
tileY
;
}
@Override
public
void
config
(
IGraffitiItem
item
,
Paint
paint
)
{
GraffitiItemBase
graffitiItem
=
(
GraffitiItemBase
)
item
;
// 根据旋转值获取正确的旋转地图
float
transX
=
0
,
transY
=
0
;
float
transXSpan
=
0
,
transYSpan
=
0
;
if
(
graffitiItem
.
getPen
()
==
GraffitiPen
.
COPY
)
{
// 仿制需要偏移图片
CopyLocation
copyLocation
=
((
GraffitiPath
)
item
).
getCopyLocation
();
// 仿制时需要偏移图片
if
(
copyLocation
!=
null
)
{
transXSpan
=
copyLocation
.
getTouchStartX
()
-
copyLocation
.
getCopyStartX
();
transYSpan
=
copyLocation
.
getTouchStartY
()
-
copyLocation
.
getCopyStartY
();
}
}
matrix
.
reset
();
matrix
.
postTranslate
(-
transX
+
transXSpan
,
-
transY
+
transYSpan
);
BitmapShader
shader
=
new
BitmapShader
(
mBitmap
,
mTileX
,
mTileY
);
shader
.
setLocalMatrix
(
matrix
);
paint
.
setShader
(
shader
);
}
@Override
public
IGraffitiColor
copy
()
{
return
new
GraffitiCopyColor
(
mBitmap
,
mTileX
,
mTileY
);
}
}
graffiti/src/main/java/cn/hzw/graffiti/GraffitiOnTouchGestureListener.java
浏览文件 @
ac1b3454
...
...
@@ -113,7 +113,7 @@ public class GraffitiOnTouchGestureListener extends TouchGestureDetector.OnTouch
}
else
{
mGraffiti
.
enableAmplifier
(
true
);
// 涂鸦时开启放大镜
// 点击copy
if
(
mGraffiti
.
getPen
()
==
GraffitiPen
.
COPY
&&
mCopyLocation
.
isInIt
(
mGraffiti
.
toX
(
mTouchX
),
mGraffiti
.
toY
(
mTouchY
),
mGraffiti
.
getSize
()))
{
if
(
mGraffiti
.
getPen
()
==
GraffitiPen
.
COPY
&&
mCopyLocation
.
contains
(
mGraffiti
.
toX
(
mTouchX
),
mGraffiti
.
toY
(
mTouchY
),
mGraffiti
.
getSize
()))
{
mCopyLocation
.
setRelocating
(
true
);
mCopyLocation
.
setCopying
(
false
);
}
else
{
...
...
graffiti/src/main/java/cn/hzw/graffiti/GraffitiPath.java
浏览文件 @
ac1b3454
...
...
@@ -64,8 +64,8 @@ public class GraffitiPath extends GraffitiItemBase {
public
static
GraffitiPath
toShape
(
IGraffiti
graffiti
,
float
sx
,
float
sy
,
float
dx
,
float
dy
)
{
GraffitiPath
path
=
new
GraffitiPath
(
graffiti
);
path
.
setPen
(
graffiti
.
getPen
());
path
.
setShape
(
graffiti
.
getShape
());
path
.
setPen
(
graffiti
.
getPen
()
.
copy
()
);
path
.
setShape
(
graffiti
.
getShape
()
.
copy
()
);
path
.
setSize
(
graffiti
.
getSize
());
path
.
setColor
(
graffiti
.
getColor
().
copy
());
...
...
@@ -81,8 +81,8 @@ public class GraffitiPath extends GraffitiItemBase {
public
static
GraffitiPath
toPath
(
IGraffiti
graffiti
,
Path
p
)
{
GraffitiPath
path
=
new
GraffitiPath
(
graffiti
);
path
.
setPen
(
graffiti
.
getPen
());
path
.
setShape
(
graffiti
.
getShape
());
path
.
setPen
(
graffiti
.
getPen
()
.
copy
()
);
path
.
setShape
(
graffiti
.
getShape
()
.
copy
()
);
path
.
setSize
(
graffiti
.
getSize
());
path
.
setColor
(
graffiti
.
getColor
().
copy
());
...
...
@@ -103,6 +103,7 @@ public class GraffitiPath extends GraffitiItemBase {
mPaint
.
setStrokeCap
(
Paint
.
Cap
.
ROUND
);
mPaint
.
setAntiAlias
(
true
);
getPen
().
config
(
this
,
mPaint
);
getColor
().
config
(
this
,
mPaint
);
getShape
().
draw
(
canvas
,
this
,
mPaint
);
}
...
...
graffiti/src/main/java/cn/hzw/graffiti/GraffitiPen.java
浏览文件 @
ac1b3454
package
cn.hzw.graffiti
;
import
android.graphics.Canvas
;
import
android.graphics.Matrix
;
import
android.graphics.Paint
;
import
cn.hzw.graffiti.core.IGraffiti
;
import
cn.hzw.graffiti.core.IGraffitiItem
;
import
cn.hzw.graffiti.core.IGraffitiPen
;
/**
...
...
@@ -18,6 +21,7 @@ public enum GraffitiPen implements IGraffitiPen {
private
boolean
mIsSelectable
=
false
;
// 画笔绘制的item是否可选
private
CopyLocation
mCopyLocation
;
private
Matrix
mMatrix
;
GraffitiPen
()
{
this
(
false
);
...
...
@@ -27,6 +31,27 @@ public enum GraffitiPen implements IGraffitiPen {
mIsSelectable
=
isSelectable
;
}
@Override
public
void
config
(
IGraffitiItem
item
,
Paint
paint
)
{
GraffitiItemBase
graffitiItem
=
(
GraffitiItemBase
)
item
;
if
(
graffitiItem
.
getPen
()
==
GraffitiPen
.
COPY
)
{
// 仿制需要偏移图片
// 根据旋转值获取正确的旋转底图
float
transX
=
0
,
transY
=
0
;
float
transXSpan
=
0
,
transYSpan
=
0
;
CopyLocation
copyLocation
=
((
GraffitiPath
)
item
).
getCopyLocation
();
// 仿制时需要偏移图片
if
(
copyLocation
!=
null
)
{
transXSpan
=
copyLocation
.
getTouchStartX
()
-
copyLocation
.
getCopyStartX
();
transYSpan
=
copyLocation
.
getTouchStartY
()
-
copyLocation
.
getCopyStartY
();
}
mMatrix
.
reset
();
mMatrix
.
postTranslate
(-
transX
+
transXSpan
,
-
transY
+
transYSpan
);
if
(
item
.
getColor
()
instanceof
GraffitiColor
)
{
((
GraffitiColor
)
item
.
getColor
()).
setMatrix
(
mMatrix
);
}
}
}
/**
* 画笔制作的item是否可选,用于旋转、移动等特定操作
*
...
...
@@ -44,6 +69,7 @@ public enum GraffitiPen implements IGraffitiPen {
synchronized
(
this
)
{
if
(
mCopyLocation
==
null
)
{
mCopyLocation
=
new
CopyLocation
();
mMatrix
=
new
Matrix
();
}
}
}
...
...
@@ -51,9 +77,14 @@ public enum GraffitiPen implements IGraffitiPen {
}
@Override
public
void
draw
(
Canvas
canvas
,
IGraffiti
graffiti
)
{
public
void
draw
Helpers
(
Canvas
canvas
,
IGraffiti
graffiti
)
{
if
(
this
==
COPY
)
{
mCopyLocation
.
drawItSelf
(
canvas
,
graffiti
.
getSize
());
}
}
@Override
public
IGraffitiPen
copy
()
{
return
this
;
}
}
graffiti/src/main/java/cn/hzw/graffiti/GraffitiShape.java
浏览文件 @
ac1b3454
...
...
@@ -4,6 +4,7 @@ import android.graphics.Canvas;
import
android.graphics.Paint
;
import
android.graphics.PointF
;
import
cn.hzw.graffiti.core.IGraffitiColor
;
import
cn.hzw.graffiti.core.IGraffitiItem
;
import
cn.hzw.graffiti.core.IGraffitiShape
;
...
...
@@ -61,4 +62,9 @@ public enum GraffitiShape implements IGraffitiShape {
throw
new
RuntimeException
(
"unknown shape:"
+
shape
);
}
}
@Override
public
IGraffitiShape
copy
()
{
return
this
;
}
}
graffiti/src/main/java/cn/hzw/graffiti/GraffitiView.java
浏览文件 @
ac1b3454
...
...
@@ -388,7 +388,7 @@ public class GraffitiView extends FrameLayout implements IGraffiti {
}
canvas
.
restore
();
mPen
.
draw
(
canvas
,
this
);
mPen
.
draw
Helpers
(
canvas
,
this
);
}
public
float
getAllScale
()
{
...
...
graffiti/src/main/java/cn/hzw/graffiti/core/IGraffitiColor.java
浏览文件 @
ac1b3454
...
...
@@ -4,16 +4,16 @@ import android.graphics.Paint;
public
interface
IGraffitiColor
{
/**
* 深度拷贝
* @return
*/
public
IGraffitiColor
copy
();
/**
* 配置画笔
* @param graffitiItem
* @param paint
*/
public
void
config
(
IGraffitiItem
graffitiItem
,
Paint
paint
);
/**
* 深度拷贝
* @return
*/
public
IGraffitiColor
copy
();
}
graffiti/src/main/java/cn/hzw/graffiti/core/IGraffitiPen.java
浏览文件 @
ac1b3454
package
cn.hzw.graffiti.core
;
import
android.graphics.Canvas
;
import
android.graphics.Paint
;
public
interface
IGraffitiPen
{
/**
* 配置画笔
* @param graffitiItem
* @param paint
*/
public
void
config
(
IGraffitiItem
graffitiItem
,
Paint
paint
);
/**
* 画笔制作的item是否可选,用于旋转、移动等特定操作
*
* @return
*/
public
boolean
isSelectable
();
/**
* 绘制画笔,由IGraffiti绘制,不属于IGraffitiItem的内容
* 绘制画笔
辅助工具
,由IGraffiti绘制,不属于IGraffitiItem的内容
* 比如可以用于仿制功能时 定位器的绘制
*
* @param canvas
* @param graffiti
*/
public
void
draw
(
Canvas
canvas
,
IGraffiti
graffiti
);
public
void
drawHelpers
(
Canvas
canvas
,
IGraffiti
graffiti
);
/**
* 深度拷贝
* @return
*/
public
IGraffitiPen
copy
();
}
graffiti/src/main/java/cn/hzw/graffiti/core/IGraffitiShape.java
浏览文件 @
ac1b3454
...
...
@@ -15,4 +15,10 @@ public interface IGraffitiShape {
* @param paint 绘制的画笔
*/
public
void
draw
(
Canvas
canvas
,
IGraffitiItem
graffitiItem
,
Paint
paint
);
/**
* 深度拷贝
* @return
*/
public
IGraffitiShape
copy
();
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录