Sfoglia il codice sorgente

feat改用maven形式依赖图形引擎

lihao1 3 anni fa
parent
commit
fff243662e

+ 7 - 3
cadengine/build.gradle

@@ -88,10 +88,14 @@ dependencies {
 //    implementation group: "cn.sagacloud", name: "sybotan-android-database", version: SYBOTAN_ANDROID_VERSION
     implementation group: 'cn.sagacloud', name: 'saga-kotlin-base', version: SAGA_KOTLIN_VERSION
     implementation group: 'cn.sagacloud', name: 'saga-kotlin-database', version: SAGA_KOTLIN_VERSION
-    implementation project(':sybotan-android-base')
-    implementation project(':sybotan-android-database')
-    implementation project(':sybotan-android-graphy')
+//    implementation project(':sybotan-android-base')
+//    implementation project(':sybotan-android-database')
+//    implementation project(':sybotan-android-graphy')
 
+    // Sybotan依赖
+    implementation group: 'cn.sagacloud', name: 'saga-kotlin-database', version: SAGA_KOTLIN_VERSION
+    implementation group: 'cn.sagacloud', name: 'sybotan-android-base', version: SYBOTAN_ANDROID_VERSION
+    implementation group: 'cn.sagacloud', name: 'sybotan-android-graphy', version: SYBOTAN_ANDROID_VERSION
     //noinspection GradleDependency
     implementation 'org.greenrobot:eventbus:3.0.0'
 }

+ 71 - 31
cadengine/src/main/java/cn/sagacloud/android/cadengine/FloorScene.kt

@@ -4,19 +4,14 @@ import android.graphics.Color
 import android.graphics.PointF
 import android.util.Log
 import cn.sagacloud.android.cadengine.types.*
-import com.alibaba.fastjson.PropertyNamingStrategy
 import com.sybotan.android.graphy.SGraphyScene
 import com.sybotan.base.extensions.toJson
 import com.sybotan.base.utils.SHttpUtil
 import com.sybotan.base.utils.SJsonUtil
 import android.text.TextUtils
-import android.util.SizeF
-import android.view.MotionEvent
 import cn.sagacloud.android.cadengine.items.*
-import cn.sagacloud.android.cadengine.test.GraphyFmItem
 import com.sybotan.android.graphy.SMotionEvent
 import com.sybotan.android.graphy.events.SGraphyViewMoveEvent
-import com.sybotan.android.graphy.items.SGraphyClockItem
 import org.greenrobot.eventbus.Subscribe
 import org.greenrobot.eventbus.ThreadMode
 
@@ -31,6 +26,18 @@ open class FloorScene : SGraphyScene() {
     var item: PointItem? = null
     val point = Point()
     var canEdit = true
+
+    /** 默认缩放比例,用于指定最小缩放比例*/
+    var defaultPointScale = 0.01785718f
+
+    /**
+     * normol 普通可以查看,可以点击问题点的模式
+     * dot 绘制问题点
+     * pipe 绘制管道模式
+     */
+    var type: String? = "dot"
+    var pipeLineList: ArrayList<PointF> = ArrayList()
+
     /** item 数据  */
     var data: FloorData? = null
         set(value) {
@@ -121,6 +128,9 @@ open class FloorScene : SGraphyScene() {
     /** 点 */
     val pointItemList = java.util.ArrayList<PointItem>()
 
+    /** 管道 */
+    val pipeItemList = ArrayList<PipeLineItem>()
+
     /**
      *  获取底图压缩文件
      *
@@ -223,6 +233,13 @@ open class FloorScene : SGraphyScene() {
             item.zOrder = 100000f
             addItem(item)
         }
+
+        //添加问题点
+        for (item in pipeItemList) {
+            item.isVisible = isShowSpace
+            item.zOrder = 100000f
+            addItem(item)
+        }
     } // Function addBaseMapItem()
 
     /**
@@ -355,7 +372,9 @@ open class FloorScene : SGraphyScene() {
         var outSide = false
         //计算控制点的边界
         //是否已经拥有该点
-        if (canEdit) {
+        //打点业务
+
+        if ("dot".equals(type)) {
             //便利该点所在的空间
             for (space in spaceList) {
                 val polygonContainsPoint = Lasso.isPolygonContainsPoint(
@@ -363,18 +382,18 @@ open class FloorScene : SGraphyScene() {
                     android.graphics.Point(e.x.toInt(), -e.y.toInt())
                 )
 //                if (polygonContainsPoint) {
-                    outSide = true
-                    space.paint.color = Opt.spaceChoseColor
-                    space.outPaint.color = Color.rgb(0xbd, 0xe8, 0xfe)
-                    point.mX = e.x
-                    point.mY = e.y
-                    if (item != null) {
-                        removeItem(item!!)
-                    }
-                    item = PointItem(point, null)
-                    item!!.isVisible = true
-                    item!!.zOrder = 100000f
-                    addItem(item!!)
+                outSide = true
+                space.paint.color = Opt.spaceChoseColor
+                space.outPaint.color = Color.rgb(0xbd, 0xe8, 0xfe)
+                point.mX = e.x
+                point.mY = e.y
+                if (item != null) {
+                    removeItem(item!!)
+                }
+                item = PointItem(point, null, defaultPointScale)
+                item!!.isVisible = true
+                item!!.zOrder = 100000f
+                addItem(item!!)
 //                } else {
 //                    space!!.paint.color = Opt.spaceColor
 //                    space.outPaint.color = Color.rgb(0xff, 0xff, 0xff)
@@ -383,21 +402,42 @@ open class FloorScene : SGraphyScene() {
             if (!outSide) {
                 return true
             }
-        } else {
-            for (space in spaceList) {
-                val polygonContainsPoint = Lasso.isPolygonContainsPoint(
-                    space.mPoints,
-                    android.graphics.Point(e.x.toInt(), -e.y.toInt())
-                )
-                if (polygonContainsPoint) {
-                    outSide = true
-                    break
-                }
-            }
-            if (!outSide) {
-                return true
+        }
+//        else {
+//            for (space in spaceList) {
+//                val polygonContainsPoint = Lasso.isPolygonContainsPoint(
+//                    space.mPoints,
+//                    android.graphics.Point(e.x.toInt(), -e.y.toInt())
+//                )
+//                if (polygonContainsPoint) {
+//                    outSide = true
+//                    break
+//                }
+//            }
+//            if (!outSide) {
+//                return true
+//            }
+//        }
+
+        //绘制管道业务
+        else if ("pipe".equals(type)) {
+            var pipe = PipeLine()
+            var pointf = PointF()
+            pointf.x = e.x
+            pointf.y = -e.y
+            pipeLineList.add(pointf)
+            pipe.points!!.add(pipeLineList)
+            var item = PipeLineItem(pipe, null)
+            item!!.isVisible = true
+            item!!.zOrder = 100000f
+            pipeItemList.add(item)
+            for (item in pipeItemList) {
+                item.isVisible = isShowSpace
+                item.zOrder = 100000f
+                addItem(item)
             }
         }
+
         if (topUp != null) {
             topUp.onSingUp(e.x, e.y)
         }

+ 76 - 0
cadengine/src/main/java/cn/sagacloud/android/cadengine/items/PipeLineItem.kt

@@ -0,0 +1,76 @@
+package cn.sagacloud.android.cadengine.items
+
+import android.graphics.*
+import cn.sagacloud.android.cadengine.Opt
+import cn.sagacloud.android.cadengine.types.PipeLine
+import cn.sagacloud.android.cadengine.types.Point
+import com.sybotan.android.graphy.SGraphyItem
+
+/**
+ * Created by lihao.
+ * Date: 2021/6/7
+ */
+class PipeLineItem(val data: PipeLine, parent: SGraphyItem? = null) : SGraphyItem(parent) {
+    /** 画笔 */
+    val paint = Paint()
+
+    /** 管道轮廓 */
+    private var pipePath: Path? = null
+
+    /** 管道轮廓线坐标list  */
+    private val pointArr = ArrayList<ArrayList<PointF>>()
+
+    val outPaint = Paint()
+    var mPoints = ArrayList<PointF>()
+
+    init {
+        try {
+            zOrder = 1f
+
+
+            for (line in data.points!!) {
+                if (line.size < 1) {
+                    continue
+                }
+
+                val path = Path()
+                path.moveTo(line[0].x, -line[0].y)
+                for (p in line) {
+                    path.lineTo(p.x, -p.y)
+                }
+                if (pipePath == null) {
+                    pipePath = path;
+                } else {
+                    // spacePath.b
+                }
+            }
+
+        } catch (e: Exception) {
+            e.printStackTrace()
+        }
+
+        outPaint.style = Paint.Style.STROKE
+        outPaint.strokeJoin = Paint.Join.ROUND
+        outPaint.isAntiAlias = true
+        outPaint.color = Color.rgb(0x44, 0x71, 0xa3)
+        outPaint.strokeWidth = 100f
+    } // Constructor
+
+
+    /**
+     * Item绘制操作
+     *
+     * @param   canvas          画布
+     * @param   rect            绘制区域
+     */
+    override fun onDraw(canvas: Canvas) {
+        if (null != pipePath) {
+//            paint.style = Paint.Style.FILL
+
+//            canvas.drawPath(pipePath!!, paint)
+
+
+            canvas.drawPath(pipePath!!, outPaint)
+        }
+    } // Function onDraw()
+}

+ 8 - 2
cadengine/src/main/java/cn/sagacloud/android/cadengine/items/PointItem.kt

@@ -11,24 +11,30 @@ import com.sybotan.android.graphy.SGraphyItem
  * Created by lihao.
  * Date: 2021/6/4
  */
-class PointItem (val data: Point, parent: SGraphyItem? = null) : SGraphyItem(parent) {
+class PointItem(val data: Point, parent: SGraphyItem? = null, defaultScale: Float) :
+    SGraphyItem(parent) {
     /** 新建 画笔 */
     val mPaint_inner = Paint()
     val mPaint_center = Paint()
     val mPaint_outer = Paint()
+
     /** 按时 画笔 */
     val not_overTime_inner = Paint()
     val not_overTime_outer = Paint()
+
     /** 逾期 画笔 */
     val overTime_inner = Paint()
     val overTime_outer = Paint()
+
     /** 承接查验复核中 */
     val checkReviewing_inner = Paint()
     val checkReviewing_outer = Paint()
+    var mDefaultScale = 0f
     //var defaultScale = 1.0f
     //var mScale = 1f
 
     init {
+        mDefaultScale = defaultScale;
         /** 按时 */
         not_overTime_inner.color = Color.parseColor("#ffffff")
         not_overTime_inner.isAntiAlias = true
@@ -78,7 +84,7 @@ class PointItem (val data: Point, parent: SGraphyItem? = null) : SGraphyItem(par
      * @param   rect            绘制区域
      */
     override fun onDraw(canvas: Canvas) {
-        data.scalePoint = scene!!.view!!.defaultPointScale / scene!!.view!!.scale
+        data.scalePoint = mDefaultScale / scene!!.view!!.scale
         canvas.drawCircle(data.mX, data.mY, 2400f * data.scalePoint, mPaint_outer)
         canvas.drawCircle(data.mX, data.mY, 1200f * data.scalePoint, mPaint_center)
         canvas.drawCircle(data.mX, data.mY, 600f * data.scalePoint, mPaint_inner)

+ 14 - 0
cadengine/src/main/java/cn/sagacloud/android/cadengine/types/PipeLine.kt

@@ -0,0 +1,14 @@
+package cn.sagacloud.android.cadengine.types
+
+import android.graphics.PointF
+
+/**
+ * Created by lihao.
+ * Date: 2021/6/7
+ */
+class PipeLine {
+    /** 定位点 */
+    var points: ArrayList<ArrayList<PointF>>? = ArrayList()
+    /** 类型 */
+    var type: String? = null
+}

+ 10 - 6
demo/build.gradle

@@ -135,11 +135,15 @@ dependencies {
     implementation group: 'cn.sagacloud', name: 'saga-kotlin-base', version: SAGA_KOTLIN_VERSION
     implementation 'com.squareup.retrofit2:retrofit:2.3.0'
     implementation 'com.squareup.retrofit2:converter-gson:2.3.0'
-    implementation project(':sybotan-android-base')
-    implementation project(':sybotan-android-database')
-    implementation project(':sybotan-android-devices')
-    implementation project(':sybotan-android-views')
-    implementation project(':sybotan-android-graphy')
-    implementation project(':sybotan-android-works')
+//    implementation project(':sybotan-android-base')
+//    implementation project(':sybotan-android-database')
+//    implementation project(':sybotan-android-devices')
+//    implementation project(':sybotan-android-views')
+//    implementation project(':sybotan-android-graphy')
+//    implementation project(':sybotan-android-works')
     implementation project(':cadengine')
+    // Sybotan依赖
+    implementation group: 'cn.sagacloud', name: 'saga-kotlin-database', version: SAGA_KOTLIN_VERSION
+    implementation group: 'cn.sagacloud', name: 'sybotan-android-base', version: SYBOTAN_ANDROID_VERSION
+    implementation group: 'cn.sagacloud', name: 'sybotan-android-graphy', version: SYBOTAN_ANDROID_VERSION
 }

+ 2 - 1
demo/src/main/java/com/sybotan/android/demo/activities/GraphyActivity.kt

@@ -91,7 +91,7 @@ class GraphyActivity : AppCompatActivity() {
             uiThread {
                 /** 适应屏幕大小 */
                 graphyView.fitSceneToView()
-                graphyView.defaultScale = graphyView.scale
+//                graphyView.defaultScale = graphyView.scale
                 /** 限定移动范围不超出屏幕 */
 //                graphyView.moveRange()
                 graphyView.post {
@@ -112,6 +112,7 @@ class GraphyActivity : AppCompatActivity() {
             }
         }
 
+
         return
     } // Function onCreate()
 

+ 0 - 2
demo/src/main/java/com/sybotan/android/demo/activities/MainActivity.kt

@@ -29,8 +29,6 @@ import android.os.Bundle
 import com.sybotan.android.base.activities.SBaseActivity
 import com.sybotan.android.base.extensions.immersive
 import com.sybotan.android.demo.R
-import com.sybotan.android.works.activities.SAboutActivity
-import com.sybotan.android.works.activities.SQrCodeActivity
 import kotlinx.android.synthetic.main.activity_main.*
 import org.jetbrains.anko.startActivity
 

+ 1 - 2
demo/src/main/java/com/sybotan/android/demo/activities/WebViewActivity.kt

@@ -26,7 +26,6 @@ package com.sybotan.android.demo.activities
 import android.support.v7.app.AppCompatActivity
 import android.os.Bundle
 import com.sybotan.android.demo.R
-import com.sybotan.android.devices.printer.SLPrinter
 //import com.sybotan.android.devices.printer.SLPrinter
 import kotlinx.android.synthetic.main.activity_web_view.*
 
@@ -47,7 +46,7 @@ class WebViewActivity : AppCompatActivity() {
         setContentView(R.layout.activity_web_view)
 
         //uiWebView.loadUrl("http://www.baidu.com")
-        uiWebView.loadUrl("http://172.16.0.241/#/")
+//        uiWebView.loadUrl("http://172.16.0.241/#/")
         //uiWebView.loadUrl("assets:///dist/index.html#/")
 
         //uiWebView.addJavascriptInterface(SLPrinter(), "LPrinter")

+ 1 - 4
demo/src/main/res/layout/activity_main.xml

@@ -33,8 +33,5 @@
             android:text="qrcode"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"/>
-    <com.sybotan.android.works.layouts.SBottomNavigationLayout
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        app:nav_menu="@menu/navigation"/>
+
 </merge>

+ 2 - 0
gradle.properties

@@ -25,6 +25,8 @@ org.gradle.jvmargs = -Xmx1536m
 
 SAGA_URL = http://www.sagaloud.cn
 SAGA_KOTLIN_VERSION = 1.4.105
+SYBOTAN_KOTLIN_VERSION = 1.2.42
+SYBOTAN_ANDROID_VERSION = 1.2.52
 SAGA_SERVICE_VERSION = 1.4.140
 SAGA_ANDROID_VERSION = 1.2.49
 SAGA_CODE = 5

+ 6 - 6
settings.gradle

@@ -22,11 +22,11 @@
  */
 rootProject.name = 'saga-android'
 
-include ':sybotan-android-base'
-include ':sybotan-android-database'
-include ':sybotan-android-devices'
-include ':sybotan-android-graphy'
-include ':sybotan-android-views'
-include ':sybotan-android-works'
+//include ':sybotan-android-base'
+//include ':sybotan-android-database'
+//include ':sybotan-android-devices'
+//include ':sybotan-android-graphy'
+//include ':sybotan-android-views'
+//include ':sybotan-android-works'
 include ':cadengine'
 include ':demo'

+ 2 - 2
sybotan-android-views/build.gradle

@@ -101,8 +101,8 @@ dependencies {
     ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // SAGA依赖
     implementation group: 'cn.sagacloud', name: 'saga-kotlin-base', version: SAGA_KOTLIN_VERSION
-    implementation project(':sybotan-android-base')
-
+//    implementation project(':sybotan-android-base')
+    implementation group: 'cn.sagacloud', name: 'sybotan-android-base', version: SYBOTAN_ANDROID_VERSION
 }
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

+ 2 - 1
sybotan-android-works/build.gradle

@@ -101,8 +101,9 @@ dependencies {
     ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // SAGA依赖
     implementation group: 'cn.sagacloud', name: 'saga-kotlin-base', version: SAGA_KOTLIN_VERSION
-    implementation project(':sybotan-android-base')
+//    implementation project(':sybotan-android-base')
     implementation project(':sybotan-android-views')
+    implementation group: 'cn.sagacloud', name: 'sybotan-android-base', version: SYBOTAN_ANDROID_VERSION
 }
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////