123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309 |
- import VectorType from '../enum/VectorType.js'
- import { floorplanService } from '../Service/FloorplanService.js'
- import { elementService } from '../Service/ElementService.js'
- import { coordinate } from '../Coordinate.js'
- import { draw } from './Draw.js'
- import { floorplanData } from '../FloorplanData.js'
- import { signService } from '../Service/SignService.js'
- export default class Render {
- constructor(layer) {
- this.layer = layer
- this.displayPanos = false
- }
- //绘制户型
- drawGeometry(vector, styleType, flag) {
- if (draw.context == null || vector == null || !vector.geoType) {
- return
- }
- switch (vector.geoType) {
- case VectorType.Wall:
- draw.drawWall(vector, styleType)
- //draw.drawMeasures(vector);
- return
- case VectorType.Point:
- draw.drawPoint(vector)
- return
- case VectorType.Tag:
- draw.drawTag(vector, styleType, flag)
- return
- case VectorType.Rectangle:
- draw.drawRectangle(vector)
- return
- case VectorType.Circle:
- draw.drawCircleGeo(vector) //drawCircle已经用了
- return
- case VectorType.Icon:
- draw.drawIcon(vector)
- return
- case VectorType.Arrow:
- draw.drawArrow(vector)
- return
- case VectorType.Table:
- draw.drawTable(vector)
- return
- case VectorType.Title:
- draw.drawTitle(vector)
- return
- case VectorType.BgImage:
- draw.drawBgImage(vector)
- return
- case VectorType.Compass:
- draw.drawCompass(vector)
- return
- case VectorType.CustomImage:
- draw.drawCustomImage(vector)
- return
- }
-
- if (signService.isSign(vector.geoType)) {
- draw.drawSign(vector)
- return
- }
- }
- //绘制交互的元素
- drawElement(vector) {
- if (draw.context == null) {
- return
- }
- switch (vector.geoType) {
- case VectorType.Point:
- draw.drawCircle(vector)
- break
- case VectorType.Line:
- draw.drawLine(vector)
- break
- }
- }
- redrawElements() {
- if (elementService.vCheckLines.X && elementService.vCheckLines.X.display) {
- this.drawElement(elementService.vCheckLines.X)
- }
- if (elementService.vCheckLines.Y && elementService.vCheckLines.Y.display) {
- this.drawElement(elementService.vCheckLines.Y)
- }
- if (elementService.startAddWall && elementService.startAddWall.display) {
- this.drawElement(elementService.startAddWall)
- }
- if (elementService.newWall && elementService.newWall.display) {
- this.drawElement(elementService.newWall)
- }
- if (elementService.checkLines.X && elementService.checkLines.X.display) {
- this.drawElement(elementService.checkLines.X)
- }
- if (elementService.checkLines.Y && elementService.checkLines.Y.display) {
- this.drawElement(elementService.checkLines.Y)
- }
- }
- redrawRooms(floor) {
- let rooms = roomService.getRooms(floor)
- for (let i = 0; i < rooms.length; ++i) {
- let img = null
- for (let j = 0; j < this.layer.app.CadManager.labels.length; ++j) {
- if (rooms[i].tagName != null && rooms[i].tagName.trim() == this.layer.app.CadManager.labels[j].text) {
- if (this.layer.app.CadManager.labels[j].type == 'hall') {
- img = roomService.getHallImg()
- draw.drawRoomBackGround(rooms[i], img)
- } else if (this.layer.app.CadManager.labels[j].type == 'room') {
- img = roomService.getDefaultImg()
- draw.drawRoomBackGround(rooms[i], img)
- } else if (this.layer.app.CadManager.labels[j].type == 'other') {
- img = roomService.getOtherImg()
- draw.drawRoomBackGround(rooms[i], img)
- }
- break
- }
- }
- if (img == null) {
- img = roomService.getOtherImg()
- draw.drawRoomBackGround(rooms[i], img)
- }
- }
- }
- autoRedraw() {
- draw.clear()
- let data = floorplanService.getFloorData()
- if (!data) {
- return
- }
- let title = data.title
- this.drawGeometry(title)
- let bgImage = data.image
- this.drawGeometry(bgImage)
- let compass = data.compass
- this.drawGeometry(compass)
- let walls = data.walls
- for (let key in walls) {
- this.drawGeometry(walls[key])
- }
- let points = data.points
- for (let key in points) {
- this.drawGeometry(points[key])
- }
- //draw.drawSpecialPoint()
- let signs = data.signs
- for (let key in signs) {
- this.drawGeometry(signs[key])
- }
- let tags = data.tags
- for (let key in tags) {
- this.drawGeometry(tags[key])
- }
- let tables = data.tables
- for (let key in tables) {
- this.drawGeometry(tables[key])
- }
- let rectangles = data.rectangles
- for (let key in rectangles) {
- this.drawGeometry(rectangles[key])
- }
- let circles = data.circles
- for (let key in circles) {
- this.drawGeometry(circles[key])
- }
- let arrows = data.arrows
- for (let key in arrows) {
- this.drawGeometry(arrows[key])
- }
- let icons = data.icons
- for (let key in icons) {
- this.drawGeometry(icons[key])
- }
- let customImages = data.customImages
- for (let key in customImages) {
- this.drawGeometry(customImages[key])
- }
-
- this.redrawElements()
- }
- autoRedrawForImg() {
- draw.clear()
- // if (this.displayPanos) {
- // this.drawPanos(this.layer.panos[floorplanService.currentFloor])
- // }
- let data = floorplanService.getFloorData()
- if (!data) {
- return
- }
- let walls = data.walls
- for (let key in walls) {
- this.drawGeometry(walls[key])
- }
- // let points = data.points
- // for (let key in points) {
- // this.drawGeometry(points[key])
- // }
- let signs = data.signs
- for (let key in signs) {
- this.drawGeometry(signs[key])
- }
- let tags = data.tags
- for (let key in tags) {
- this.drawGeometry(tags[key], null, true)
- }
- //this.redrawElements()
- }
- //下载图片
- //style表示风格
- autoRedrawForDownLoadImg(styleType) {
- draw.clear()
- if (styleType == 'style-1') {
- draw.drawBackGround('#FFFFFF')
- this.redrawRooms(floorplanService.getCurrentFloor())
- } else if (styleType == 'style-2') {
- draw.drawBackGround('#000000')
- this.redrawRooms(floorplanService.getCurrentFloor())
- } else if (styleType == 'style-3') {
- draw.drawBackGround('#FFFFFF')
- } else if (styleType == 'style-4') {
- draw.drawBackGround('#000000')
- }
- let data = floorplanService.getFloorData()
- if (!data) {
- return
- }
- let walls = data.walls
- for (let key in walls) {
- this.drawGeometry(walls[key], styleType)
- }
- let signs = data.signs
- for (let key in signs) {
- this.drawGeometry(signs[key])
- }
- let tags = data.tags
- for (let key in tags) {
- this.drawGeometry(tags[key], styleType)
- }
- draw.drawCompass(styleType)
- }
- redrawCore() {
- console.log('重绘!')
- draw.clear()
- let data = floorplanService.getFloorData()
- if (!data) {
- return
- }
- let walls = data.walls
- for (let key in walls) {
- this.drawGeometry(walls[key])
- }
- let points = data.points
- for (let key in points) {
- this.drawGeometry(points[key])
- }
- let signs = data.signs
- for (let key in signs) {
- this.drawGeometry(signs[key])
- }
- }
- clear() {
- draw.clear()
- }
- getContext() {
- return draw.context
- }
- }
- // const render = new Render()
- // export { render }
|