public void mergeAllFigure() { drawingFigures.Clear(); foreach (Figure f in drawnFigures) { if (!(f is MergedFigure)) { drawingFigures.Add(f); } } mergeFigure(); }
/** * @brief 입력으로 받은 파일이름으로 입력받은 그룹에 해당하는 figure만 저장하기 위해 오버로딩된 메서드이다. * @details 도형이 잘리지 않도록 하기 위해서 View의 크기에 맞게 잘라서 저장된다. 저장하는 파일 경로가 각 객체의 groupName에 저장된다. * @author 김효상 * @date 2017-07-31 * @param fileName 저장하고자 하는 파일이름 * @param groupName 저장하고자 하는 그룹의 이름 */ public String SaveDocument(string fileName, string groupName) { View ptemp = ((View)viewList[0]); int W = ptemp.Width; int H = ptemp.Height; this.fileName = fileName; Stream streamWrite = File.Create(fileName); BinaryFormatter binaryWrite = new BinaryFormatter(); FigureList groupList = new FigureList(); foreach (Figure figure in drawnFigures) { if (figure.groupName.Equals(groupName)) { figure.groupName = Path.GetFullPath(fileName); groupList.Add(figure); } } binaryWrite.Serialize(streamWrite, groupList); streamWrite.Close(); innerNeedSave = false; return(fileName); }
/** * @brief FigureList 상대좌표계 복제 * @author 김민규 * @date 2017-2-7 * @param magnificationRatio 확대 비율 * @param screenPos 화면의 현재 위치 * @return FigureList 똑같은 값을 가지는 새로운 FigureList를 생성해 반환한다. */ public virtual FigureList RelativeClone(int magnificationRatio, Pos screenPos) { FigureList list = new FigureList(); for (int i = 0; i < this.Count; i++) { list.Add((Figure)this[i].RelativeClone(magnificationRatio, screenPos)); } return(list); }
/** * @brief FigureList 복제 * @author 김민규 * @date 2017-1-27 * @return object 똑같은 값을 가지는 새로운 FigureList를 생성해 반환한다. */ public virtual object Clone() { FigureList list = new FigureList(); for (int i = 0; i < this.Count; i++) { list.Add((Figure)this[i].Clone()); } return(list); }
/** * @brief 여러개의 도형을 복사, 붙여넣기, 잘라내기 할 수 있도록 하였다. * @details figList로 부터 도형정보를 얻어 clippedfigure에 넣음. select box사용중일 때도 복사, 붙여넣기 가능함. * @author 박성식 * @date 16-17-13 */ public void copy() { // 현재 선택모드이고. if (currentTool == FIGURE.ARROW || currentTool == FIGURE.BOX) { // 그려진 객체가 있다면 if (drawingFigures.Count > 0) { clipboardFigure.Clear(); // 클립보드객체에 복사한다. int cnt = drawingFigures.Count; for (int i = 0; i < cnt; i++) { clipboardFigure.Add((Figure)drawingFigures[i].Clone()); ((Figure)clipboardFigure[clipboardFigure.Count - 1]).moveAndResize(5, 5); } } } }
/** * @brief 선택된 객체가 맨 앞으로 가지 않고 Z값을 준수하도록 더 앞 객체의 리스트를 불러온다. * @author 김민규 * @date 2017-1-27 * @param currentFigure 비교할 객체 * @return FigureList 더 높은 Z값을 가지는 오브젝트의 리스트 */ public FigureList getHigherZFigures(Figure currentFigure) { FigureList higherZFigures = new FigureList(); int currentFigureIndex = drawnFigures.IndexOf(currentFigure); for (int currentIndex = currentFigureIndex + 1; currentIndex < drawnFigures.Count; currentIndex++) { higherZFigures.Add(drawnFigures[currentIndex]); } return(higherZFigures); }
/** * @brief objList에 Figure를 추가한다. * @details Document의 objList에 새로운 도형을 추가하기 위해서 사용된다. * @param figure 추가하고자 하는 Figure */ public void addFigure(Figure figure) { drawnFigures.Add(figure); }