Re: About flowcharts

Mark Summerfield <[email protected]>
Newsgroups gmane.comp.type-setting.lout
Organization Qtrac Ltd.
Message-ID <20110325200948.03baa6ae@dino>
Hi Dominique,

On Fri, 25 Mar 2011 15:58:15 +0100 (CET)
[email protected] wrote:
> Hello,
> 
> I would like to know if someone has already built flowcharts with
> Lout? I mean by flowcharts, something like in this paper:
> http://se.uwaterloo.ca/~dberry/FTP_SITE/reprints.journals.conferences/flo.conference.paper.pdf
> Thanks.
> 
> Dominique Cretel

Below are some basic ones I created ages ago. I haven't used them in a
while and they're probably not perfect but they might prove helpful to
get you started:

# Just cut from here to END and save to, say flowchart.lout, and then in
# the file you want to use them do:
#   @SysInclude{diag}
#   @Include{flowchart.lout}
#
# Here is the list of shapes:
#  Decision: Use @Diamond
# @FileBox
# @FolderBox
# @ManualInput 
# @ManualOp 
# @OPConnector 
# @PredefProcess 
# @Preparation 
#  Process: Use @Box
# @Printout 
# @SlantBox 
# @StoredData 

extend @DiagSetup @Diag
macro @FileBox {
    @Node 
	outline {
	    N:: { xsize / 2 ysize }
	    S:: { xsize / 2 0 }
	    W:: { 0 ysize / 2 }
	    E:: { xsize ysize / 2 }
	    CTR:: { xsize / 2 ysize / 2 }
	    0 0
	    0 ysize
	    xsize - 0.5f ysize
	    xsize ysize - 0.5f
	    xsize 0
	    0 0
	    []
	    xsize - 0.5f ysize
	    xsize - 0.5f ysize - 0.5f
	    xsize ysize - 0.5f
	}
}

extend @DiagSetup @Diag
macro @FolderBox {
    @Node 
	outline {
	    N:: { xsize / 2 ysize - 0.4f }
	    S:: { xsize / 2 0 }
	    W:: { 0 ysize / 2 }
	    E:: { xsize ysize / 2 }
	    CTR:: { xsize / 2 ysize / 2 }
	    0 0
	    0 ysize - 0.4f
	    0.4f ysize 
	    xsize * 0.33 ysize
	    xsize * 0.33 + 0.4f ysize - 0.4f
	    xsize ysize - 0.4f
	    xsize 0
	    0 0
	}
}

extend @DiagSetup @Diag
macro @SlantBox {
    @Node 
	outline {
	    N:: { xsize / 2 ysize }
	    S:: { xsize / 2 0 }
	    W:: { 0.3f ysize / 2 }
	    E:: { xsize - 0.3f ysize / 2 }
	    CTR:: { xsize / 2 ysize / 2 }
	    0 0 
	    0.6f ysize 
	    xsize ysize 
	    xsize - 0.6f 0 
	    0 0 
	}
}

extend @DiagSetup @Diag
macro @OPConnector {
    @Node 
	outline {
	    N:: { xsize / 2 ysize }
	    S:: { xsize / 2 0 }
	    W:: { 0 ysize / 2 }
	    E:: { xsize ysize / 2 }
	    CTR:: { xsize / 2 ysize / 2 }
	    0 ysize
	    xsize ysize
	    xsize 0.4f
	    xsize / 2 0
	    0 0.4f
	    0 ysize
	}
}

extend @DiagSetup @Diag
macro @StoredData {
    @Node 
	outline {
	    N:: { xsize / 2 ysize }
	    S:: { xsize / 2 0 }
	    W:: { 0 ysize / 2 }
	    E:: { xsize - 0.4f ysize / 2 }
	    CTR:: { xsize / 2 ysize / 2 }
	    0.4f 0
	    [ 1.0f ysize / 2 clockwise ]
	    0.4f ysize
	    xsize ysize
	    [ xsize + 1.0f ysize / 2 ]
	    xsize 0
	    0.4f 0
	}
}

extend @DiagSetup @Diag
macro @DirectData {
    @Node 
	outline {
	    N:: { xsize / 2 ysize }
	    S:: { xsize / 2 0 }
	    W:: { 0 ysize / 2 }
	    E:: { xsize ysize / 2 }
	    CTR:: { xsize / 2 ysize / 2 }
	    0.4f 0
	    [ 1.0f ysize / 2 clockwise ]
	    0.4f ysize
	    xsize - 0.4f ysize
	    [ xsize + 1.0f ysize / 2 ]
	    xsize - 0.4f 0
	    0.4f 0
	    []
	    xsize - 0.4f 0
	    [ xsize - 1.0f ysize / 2 ]
	    xsize - 0.4f ysize 
	}
}

extend @DiagSetup @Diag
macro @Printout {
    @Node 
	outline {
	    N:: { xsize / 2 ysize }
	    S:: { xsize / 2 0.2f }
	    W:: { 0 ysize / 2 }
	    E:: { xsize ysize / 2 }
	    CTR:: { xsize / 2 ysize / 2 }
	    0 ysize
 	    0 0.2f
	    [ xsize / 4 1.0f ]
 	    xsize / 2 0.2f
	    [ xsize * 0.75 1.4f ]
	    xsize 0.4f
	    xsize ysize
	    0 ysize
	}
}

extend @DiagSetup @Diag
macro @Preparation {
    @Node 
	outline {
	    N:: { xsize / 2 ysize }
	    S:: { xsize / 2 0 }
	    W:: { 0 ysize / 2 }
	    E:: { xsize ysize / 2 }
	    CTR:: { xsize / 2 ysize / 2 }
	    0 ysize / 2
	    0.4f ysize
	    xsize - 0.4f ysize
	    xsize ysize / 2
	    xsize - 0.4f 0
	    0.4f 0
	    0 ysize / 2
	}
}

extend @DiagSetup @Diag
macro @ManualOp {
    @Node 
	outline {
	    N:: { xsize / 2 ysize }
	    S:: { xsize / 2 0 }
	    W:: { 0.2f ysize / 2 }
	    E:: { xsize - 0.2f ysize / 2 }
	    CTR:: { xsize / 2 ysize / 2 }
	    0 ysize
	    xsize ysize
	    xsize - 0.4f 0
	    0.4f 0
	    0 ysize
	}
}

extend @DiagSetup @Diag
macro @ManualInput {
    @Node 
	outline {
	    N:: { xsize / 2 ysize - 0.2f }
	    S:: { xsize / 2 0 }
	    W:: { 0 ysize / 2 }
	    E:: { xsize ysize / 2 }
	    CTR:: { xsize / 2 ysize / 2 }
	    0 0
	    0 ysize - 0.4f
	    xsize ysize
	    xsize 0
	    0 0
	}
}

extend @DiagSetup @Diag
macro @PredefProcess {
    @Node 
	outline {
	    N:: { xsize / 2 ysize }
	    S:: { xsize / 2 0 }
	    W:: { 0 ysize / 2 }
	    E:: { xsize ysize / 2 }
	    CTR:: { xsize / 2 ysize / 2 }
	    0 0
	    0 ysize
	    xsize ysize
	    xsize 0
	    0 0
	    []
	    0.4f 0
	    0.4f ysize
	    []
	    xsize - 0.4f 0
	    xsize - 0.4f ysize
	}
}
### END


-- 
Mark Summerfield, Qtrac Ltd, www.qtrac.eu
    C++, Python, Qt, PyQt - training and consultancy
        "Programming in Go" - ISBN 0321774639
            http://www.qtrac.eu/gobook.html
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.