!! Copyright (C) Stichting Deltares, 2005-2019. !! !! This file is part of iMOD. !! !! This program is free software: you can redistribute it and/or modify !! it under the terms of the GNU General Public License as published by !! the Free Software Foundation, either version 3 of the License, or !! (at your option) any later version. !! !! This program is distributed in the hope that it will be useful, !! but WITHOUT ANY WARRANTY; without even the implied warranty of !! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the !! GNU General Public License for more details. !! !! You should have received a copy of the GNU General Public License !! along with this program. If not, see . !! !! Contact: imod.support@deltares.nl !! Stichting Deltares !! P.O. Box 177 !! 2600 MH Delft, The Netherlands. !! MODULE MOD_IPF_LABEL USE WINTERACTER USE RESOURCE USE IMODVAR, ONLY : DP_KIND,SP_KIND,IBACKSLASH,ILABELNAME USE MODPLOT, ONLY : MP USE MOD_UTL, ONLY : UTL_FILLARRAY,UTL_READARRAY,RTOS,UTL_GETHELP USE MOD_IPF_PAR USE MOD_3D_PAR, ONLY : IPFPLOT CONTAINS !###====================================================================== SUBROUTINE IMOD3D_LABELS(IIPF,IPLOT) !###====================================================================== IMPLICIT NONE INTEGER,INTENT(IN) :: IIPF,IPLOT INTEGER :: ITYPE,I INTEGER,DIMENSION(:),ALLOCATABLE :: ILIST TYPE(WIN_MESSAGE) :: MESSAGE IF(.NOT.ALLOCATED(IPF))THEN CALL WMESSAGEBOX(OKONLY,EXCLAMATIONICON,COMMONOK,'You need to draw the IPF file before modifying any settings/labels.','Warning') RETURN ENDIF CALL WDIALOGLOAD(ID_DIPFLABELS,ID_DIPFLABELS) CALL WDIALOGSPINNERSTEP(IDF_REAL1,0.1D0,0.5D0) IF(ALLOCATED(IPFPLOT))THEN CALL WDIALOGPUTCHECKBOX(IDF_CHECK4,IPFPLOT(IIPF)%IFANCY) CALL WDIALOGPUTCHECKBOX(IDF_CHECK3,IPFPLOT(IIPF)%ISHADE) CALL WDIALOGPUTINTEGER(IDF_INTEGER1,IPFPLOT(IIPF)%ISUB) CALL WDIALOGPUTDOUBLE(IDF_REAL1,IPFPLOT(IIPF)%RADIUS,'(F8.2)') CALL WDIALOGPUTDOUBLE(IDF_REAL2,IPFPLOT(IIPF)%SIMPLIFY,'(F8.2)') CALL WDIALOGPUTINTEGER(IDF_INTEGER2,IPFPLOT(IIPF)%ASSCOL1) CALL WDIALOGPUTINTEGER(IDF_INTEGER3,IPFPLOT(IIPF)%ASSCOL2) CALL WDIALOGPUTOPTION(IDF_MENU3,IPFPLOT(IIPF)%ISTYLE) ELSE CALL WDIALOGFIELDSTATE(IDF_LABEL3,0) CALL WDIALOGFIELDSTATE(IDF_LABEL4,0) CALL WDIALOGFIELDSTATE(IDF_LABEL7,0) CALL WDIALOGFIELDSTATE(IDF_LABEL8,0) CALL WDIALOGFIELDSTATE(IDF_CHECK3,0) CALL WDIALOGFIELDSTATE(IDF_CHECK4,0) CALL WDIALOGFIELDSTATE(IDF_MENU3,0) CALL WDIALOGFIELDSTATE(IDF_INTEGER1,0) CALL WDIALOGFIELDSTATE(IDF_REAL1,0) CALL WDIALOGFIELDSTATE(IDF_REAL2,0) CALL WDIALOGPUTINTEGER(IDF_INTEGER2,MP(IPLOT)%ASSCOL1) CALL WDIALOGPUTINTEGER(IDF_INTEGER3,MP(IPLOT)%ASSCOL2) ENDIF ALLOCATE(ILIST(IPF(IIPF)%NCOL)) ILIST=0 IF(ABS(MP(IPLOT)%IEQ).GT.0)THEN CALL UTL_FILLARRAY(ILIST,IPF(IIPF)%NCOL,ABS(MP(IPLOT)%IEQ)) ENDIF CALL WDIALOGPUTMENU(IDF_MENU1,IPF(IIPF)%ATTRIB,IPF(IIPF)%NCOL,ILIST) !## plot IF(MP(IPLOT)%IEQ.LT.0)CALL WDIALOGPUTCHECKBOX(IDF_CHECK1,0) !## use colouring for labels IF(MP(IPLOT)%IEQ.GE.0)CALL WDIALOGPUTCHECKBOX(IDF_CHECK1,1) !## use colouring for labels CALL WDIALOGPUTINTEGER(IDF_INTEGER4,MP(IPLOT)%TSIZE) !## textsize CALL WDIALOGPUTCHECKBOX(IDF_CHECK2,IBACKSLASH) CALL WDIALOGPUTCHECKBOX(IDF_CHECK5,ILABELNAME) CALL IMOD3D_LABELS_FIELDS(IIPF) CALL WDIALOGSHOW(-1,-1,0,3) DO CALL WMESSAGE(ITYPE,MESSAGE) SELECT CASE (ITYPE) ! CASE (EXPOSE) ! CALL IMOD3D_DISPLAY(1) ! CASE (RESIZE) ! CALL IMOD3D_PROCESSRESIZE(MESSAGE%VALUE1,MESSAGE%VALUE2) CASE (FIELDCHANGED) SELECT CASE (MESSAGE%VALUE2) CASE (IDF_CHECK4) CALL IMOD3D_LABELS_FIELDS(IIPF) END SELECT CASE (PUSHBUTTON) SELECT CASE (MESSAGE%VALUE1) CASE (IDHELP) CALL UTL_GETHELP('4.2.2','MMO.IPO.IPFLab') CASE (IDOK) CALL WDIALOGGETMENU(IDF_MENU1,ILIST) CALL UTL_READARRAY(ILIST,IPF(IIPF)%NCOL,MP(IPLOT)%IEQ) CALL WDIALOGGETCHECKBOX(IDF_CHECK1,I) !## use colouring for labels IF(I.EQ.0)MP(IPLOT)%IEQ=-1*MP(IPLOT)%IEQ CALL WDIALOGGETINTEGER(IDF_INTEGER4,MP(IPLOT)%TSIZE) !## second z CALL WDIALOGGETCHECKBOX(IDF_CHECK2,IBACKSLASH) CALL WDIALOGGETCHECKBOX(IDF_CHECK5,ILABELNAME) IF(ALLOCATED(IPFPLOT))THEN CALL WDIALOGGETDOUBLE(IDF_REAL1,IPFPLOT(IIPF)%RADIUS) CALL WDIALOGGETCHECKBOX(IDF_CHECK4,IPFPLOT(IIPF)%IFANCY) CALL WDIALOGGETCHECKBOX(IDF_CHECK3,IPFPLOT(IIPF)%ISHADE) CALL WDIALOGGETINTEGER(IDF_INTEGER1,IPFPLOT(IIPF)%ISUB) CALL WDIALOGGETINTEGER(IDF_INTEGER2,IPFPLOT(IIPF)%ASSCOL1) CALL WDIALOGGETINTEGER(IDF_INTEGER3,IPFPLOT(IIPF)%ASSCOL2) CALL WDIALOGGETMENU(IDF_MENU3,IPFPLOT(IIPF)%ISTYLE) CALL WDIALOGGETDOUBLE(IDF_REAL2,IPFPLOT(IIPF)%SIMPLIFY) ENDIF CALL WDIALOGGETINTEGER(IDF_INTEGER2,MP(IPLOT)%ASSCOL1) CALL WDIALOGGETINTEGER(IDF_INTEGER3,MP(IPLOT)%ASSCOL2) EXIT CASE (IDCANCEL) EXIT END SELECT END SELECT ENDDO CALL WDIALOGUNLOAD() DEALLOCATE(ILIST) END SUBROUTINE IMOD3D_LABELS !###====================================================================== SUBROUTINE IMOD3D_LABELS_FIELDS(IIPF) !###====================================================================== IMPLICIT NONE INTEGER,INTENT(IN) :: IIPF INTEGER :: I REAL(KIND=DP_KIND) :: RM CALL WDIALOGGETCHECKBOX(IDF_CHECK4,I) !## get maximum linethickness for OpenGL IF(I.EQ.1)THEN IF(ALLOCATED(IPFPLOT))IPFPLOT(IIPF)%RADIUS=MAX(IPFPLOT(IIPF)%RADIUS,0.1) CALL WDIALOGPUTSTRING(IDF_LABEL3,'Size symbol (>0.1)') ELSE RM=10.0D0 IF(ALLOCATED(IPFPLOT))IPFPLOT(IIPF)%RADIUS=MAX(MIN(IPFPLOT(IIPF)%RADIUS,RM),0.0D0) CALL WDIALOGPUTSTRING(IDF_LABEL3,'Size symbol (0.1-'//TRIM(RTOS(RM,'F',2))//')') ENDIF CALL WDIALOGFIELDSTATE(IDF_LABEL4,I) CALL WDIALOGFIELDSTATE(IDF_LABEL7,I) CALL WDIALOGFIELDSTATE(IDF_INTEGER1,I) CALL WDIALOGFIELDSTATE(IDF_CHECK3,I) CALL WDIALOGFIELDSTATE(IDF_MENU3,I) CALL WDIALOGFIELDSTATE(IDF_LABEL8,I) CALL WDIALOGFIELDSTATE(IDF_REAL2,I) END SUBROUTINE IMOD3D_LABELS_FIELDS END MODULE MOD_IPF_LABEL