032c410b43
Add mirror_x to extrinsic properties
...
It's not implemented for Polygon shapes, since I haven't thought about
how to normalize those for reflection yet
2019-05-17 00:41:26 -07:00
2e54cf1080
initialize identifier for text shapes
2019-05-17 00:39:56 -07:00
16c6bfc70a
Cosmetic changes to argument lists
2019-05-17 00:39:46 -07:00
58353b7884
Remove orphaned comment
2019-05-17 00:38:20 -07:00
38f64f7c62
Use __slots__ for class members
...
Also use the other sort of type hints for instance variables
2019-05-17 00:37:56 -07:00
0b962999b2
Add arbitrary identifier for labels and subpattern/repetition
2019-05-17 00:34:01 -07:00
703c1aa6d8
Custom deepcopy for labels
2019-05-17 00:32:51 -07:00
17451cd995
Force dose2dtype to accept only a list of patterns
...
Backwards incompatible, just like the rest of the gdsii rework
2019-05-17 00:30:32 -07:00
1ef8518c60
Fix dose2dtype
...
Was broken during gdsii refactor
2019-05-17 00:28:46 -07:00
a6a3ae797c
Fix Pattern.scale_by() for labels
...
Label offsets weren't being scaled.
2019-05-15 23:51:51 -07:00
4bd5542ce9
Clarify warning when adding suffix
2019-05-15 23:51:17 -07:00
3ff9a8a506
Shorten long names when writing
...
Maybe turn this into an option later?
2019-05-15 23:51:00 -07:00
376cbcce26
Use buffered IO
...
free ~10% speedup on read, probably similar on write
2019-05-15 23:50:31 -07:00
a461446059
Custom deepcopy() implementations to help speed things up
2019-05-15 00:19:37 -07:00
94410dffc9
Fix clockwise (to-perp) path bends
2019-05-15 00:18:43 -07:00
2909b25fd7
Missing args for commit bc43be48bc
(cap_extensions)
2019-05-15 00:17:40 -07:00
a44a7c176e
Add type hints
2019-05-15 00:14:35 -07:00
bc43be48bc
Implement SquareCustom end-caps and gds output
2019-05-15 00:14:17 -07:00
d5665f54a7
Comment and type hint updates
2019-05-15 00:12:34 -07:00
b8b848c28f
add Pattern.is_empty()
2019-05-15 00:11:44 -07:00
0bbcf3823a
Fix .gz suffix detection
2019-05-15 00:11:28 -07:00
347716ec6e
Give shapes unique path-like identifiers when flattening
2019-05-13 23:55:42 -07:00
9ab1372c7b
Allow shapes to carry an arbitrary identifier (Tuple)
2019-05-13 23:55:14 -07:00
380393dbc3
Fix mirror axis for arrays
2019-05-07 00:58:39 -07:00
5741b38ca6
fixup remove_colinear_vertices
2019-05-06 21:07:53 -07:00
ee6699a7de
fix alternate polygon constructors
2019-04-20 15:44:45 -07:00
0018891200
handle defaults for path params
2019-04-20 15:42:42 -07:00
485a7bc29d
General overhaul of gdsii read/write functions
...
- read() and write() now take streams instead of filenames
- readfile() and writefile() were added to handle filenames and can
detect and handle '.gz' suffixed/compressed files.
- write_dose2dtype() and and read_dtype2dose() were removed in favor of
read(use_dtype_as_dose=True) and dose2dtype()
2019-04-20 15:29:56 -07:00
d6d26b4e46
Add modify_originals param and don't modify the pattern by default
2019-04-20 15:26:27 -07:00
783c0c0844
Add support for gds paths
2019-04-20 15:25:19 -07:00
d53c9487ff
Comment and error-checking fixes
2019-04-20 14:19:18 -07:00
8fe8bbd655
Normalization-related fixes
2019-04-20 14:18:52 -07:00
c6fac19fe0
Set standard constructor arg order and add rotation
and mirrored
args where reasonable
2019-04-20 14:18:25 -07:00
8dfb6d4440
Move vertex-cleanup functions to utils and generalize for non-closed paths
2019-04-20 00:35:53 -07:00
79c89b2a4b
Rename empty-named patterns on gdsii save
2019-04-18 01:14:08 -07:00
9ecd34b2f7
Cast offsets to float
2019-04-18 01:12:51 -07:00
8987cf8c44
mirror_signs are per-coordinate, not per-vector
2019-04-18 01:12:33 -07:00
e3586a4574
fix variable names (manhattanize_fast fixes)
2019-04-16 22:24:43 -07:00
c6830abe22
Fix corners in manhattanize_fast
2019-04-16 00:42:48 -07:00
11bbf6aa0b
Fix auto-renaming for structures
2019-04-16 00:41:18 -07:00
5e6485f410
allow setting library name
2019-04-15 22:43:03 -07:00
3094aa4043
Automatically disambiguate repeated pattern names.
...
Also check for >32 char names
2019-04-13 21:10:08 -07:00
3815069136
Fix out-of-range angles
2019-04-13 17:34:28 -07:00
f7ce17c293
Fix mirroring
2019-04-13 17:34:01 -07:00
bc723d96f3
Counts should be ints
2019-04-13 17:33:15 -07:00
90a068da80
tabs-to-spaces
2019-04-13 17:33:04 -07:00
628845ca4b
Bump version to 0.5
2019-04-07 17:53:32 -07:00
bc557a54b7
fix typo in comment
2019-03-31 20:57:18 -07:00
c50bd8e148
Add GridRepetition: a SubPattern-like object which implements regular spatial arrays.
...
Also rework masque.file.gdsii to consolidate write() and
write_dose2dtype()
2019-03-31 20:57:10 -07:00
539198435c
Add .copy() and .deepcopy() convenience methods
2019-03-31 14:13:12 -07:00
eb6a5d8e8c
Add shapes.Polygon.rect() for simpler construction of various axis-aligned rectangles
2018-11-23 18:31:56 -08:00
ef305cbac9
Fix syntax
2018-11-23 18:09:14 -08:00
3ebb87bfc7
fix location of svgwrite dependency
2018-11-13 23:33:16 -08:00
5bce2005b6
Add docstring for manhattanize_fast
2018-11-13 23:32:44 -08:00
ab483fc9d4
Remove pyclipper dependency; remove shape.cut()
2018-11-13 23:32:26 -08:00
8dfd856e18
Subtattern .as_pattern() should deepcopy
2018-10-28 13:34:37 -07:00
df5c61f1d4
Clarify that rectangle/square is centered on the origin
...
Eventually, should allow arbitrary limit combination (rather than center
+ width)
2018-10-28 13:34:09 -07:00
b295c318a9
Fix arc bounding box calculation
2018-10-28 13:32:04 -07:00
64cb1ced34
fix spacing (cosmetic)
2018-10-28 13:31:23 -07:00
a064e74fc1
Merge branch 'master' of mpxd.net:jan/masque
2018-09-16 20:37:44 -07:00
d17cf5b6be
label should have a list of 1 point
2018-09-16 20:35:14 -07:00
f3115baabe
Add get_cap_edges()
2018-09-16 20:33:55 -07:00
832e3b46fa
Add general angle-to-parameter helper function
...
and improve accuracy of to_polygons
2018-09-16 20:32:19 -07:00
48b8087d0c
Make read output consistent with write args
2018-09-16 20:19:28 -07:00
4323d81abd
Change default written library name
2018-09-16 20:18:21 -07:00
7eda7ea873
Clarify docs -- read returns a dict
2018-09-16 20:18:04 -07:00
f3aa27a7c4
add missing import
2018-09-02 20:01:25 -07:00
4498990545
Move version string into __init__
2018-08-30 23:12:01 -07:00
4fea49edef
Add missing file (support for labels)
2018-08-30 23:07:14 -07:00
86068102d9
Clarify that layer can be a tuple
2018-08-30 23:06:56 -07:00
6bafaaf4fc
Fix typo in arc docs
2018-08-30 23:06:45 -07:00
108694551b
add support for labels (e.g. GDS TEXT)
2018-08-30 23:06:31 -07:00
8623dbbeac
Put masque-layer to gds-layer conversion into a private function, and only call once per shape
2018-08-30 23:05:30 -07:00
4840c321c5
rename param for do_subset
2018-04-18 07:48:08 -07:00
6fda991700
Rewrite/fix apply() implementation
2018-04-18 07:47:50 -07:00
082236b6fd
add missing arg
2018-04-16 15:34:14 -07:00
cc35ff802e
clean up comments
2018-04-16 15:33:04 -07:00
4c3250a2a1
add recursive option to subset
2018-04-16 15:32:15 -07:00
f875ae89d7
make sure apply() only hits each pattern one
2018-04-16 15:31:18 -07:00
52adb582dc
copy name when using Pattern.subset()
2018-04-16 15:06:16 -07:00
e38a530dee
close paren in docstring
2018-04-16 14:55:19 -07:00
1f17c07bef
remove errant print
2018-04-16 14:55:01 -07:00
79ac6a59e4
Fix mirror axis in Pattern.mirror()
2018-04-16 13:59:44 -07:00
70f3ea9304
Handle mirrored gds shapes
2018-04-14 15:29:44 -07:00
f580e784f7
Add mirroring functions to patterns/subpatterns
2018-04-14 15:29:19 -07:00
d5a255a9d7
Add mirror() to shapes
...
Might need to fix ordering on Text.to_polygons()
2018-04-14 15:27:56 -07:00
358f45c5fd
Error out when we see absolute positioning in GDS
...
We don't support it (yet?)
2018-04-14 15:23:01 -07:00
c14daf2e5e
Fix GDS AREF handling
2018-04-14 15:20:39 -07:00
0170f45f75
GDS stores rotation in degrees
2018-04-14 15:19:48 -07:00
04ff11d3cb
check for zero-length names
2018-04-14 15:06:12 -07:00
37a55e0d9b
Add deepcopy() convenience method to Pattern
2018-04-14 15:02:35 -07:00
e4545bfa30
use is_scalar for checking if layer is a tuple
2018-04-14 15:02:13 -07:00
3e06214b7e
Add recursive "apply()" helper to pattern
2018-04-14 14:53:53 -07:00
4c535e6564
return self from Text's scale_by and rotate
2018-04-14 14:38:42 -07:00
eae57f7158
add set_bit
2018-04-14 14:34:34 -07:00
3d7df45c2b
fix get_bit docs
2018-04-14 14:34:26 -07:00
e2b05d7c86
add fast approximate manhattanization function
2018-01-15 23:55:28 -08:00
2ca27b0792
fix typo
2017-11-14 10:17:11 -08:00
0fd0e259aa
Merge branch 'master' of mpxd.net:jan/masque
2017-11-04 12:19:08 -07:00
b7b0da7432
Allow writing a list of patterns to gds (multiple topcells)
2017-11-04 12:18:42 -07:00
c451e93df0
Add option to check for invalid polygons when reading gds
2017-11-04 12:15:35 -07:00
6aa1787ba0
add comment specifying what gdsii lib is used
2017-11-04 12:12:05 -07:00
9308454ad4
allow cutting any shape, always require pyclipper
2017-10-17 12:35:56 -07:00
87c2ef5948
use pyclipper for polygon cutting
2017-10-17 11:09:53 -07:00
b3f99ee123
abs when thresholding raster for manhattanization
2017-10-17 11:09:53 -07:00
83d163a102
fix typo
2017-09-08 14:26:27 -07:00
f4b8f513d4
fix typos
2017-09-08 10:30:56 -07:00
01395134ee
Also clean vertices before cutting
2017-09-07 21:59:44 -07:00
a817bf6642
Remove debug code
2017-09-06 21:04:57 -07:00
10cd0778b8
Add copy() method to Shape
2017-09-06 21:04:44 -07:00
723944018e
add documentation to Polygon.cut()
2017-09-06 21:03:39 -07:00
cea172e7f2
Make cut generate clean polygons
2017-09-06 21:03:23 -07:00
4466198924
Add cut() function for polygon
2017-09-06 01:16:44 -07:00
ffbaf8f4c4
Add manhattanization functionality
2017-09-06 01:16:24 -07:00
3d52566016
Improve error handling
2017-09-06 01:14:46 -07:00
934bfcd74e
Clean up type info
2017-09-06 01:14:27 -07:00
ccfd0f7f4f
remove whitespace
2017-09-05 11:00:50 -07:00
583dd7b018
allow caller to specify gdsii logical unit
2017-09-05 11:00:36 -07:00
3b3ee216c2
add missing import
2017-08-29 16:55:58 -07:00
3d89cd42a0
further fixes to ellipse bounding box
2017-08-29 16:55:06 -07:00
85e2c662cc
fix incomplete commit
2017-08-29 15:57:37 -07:00
8256a540dc
Use polar angle for ellipse bounds
2017-08-29 15:51:00 -07:00
fdd18ca7d8
add functions for reading/writing tuple-valued layers to gds
2017-08-29 15:45:00 -07:00
1127242aa0
fix typo
2017-08-24 15:35:10 -07:00
dcf34536ad
Improve docs for gdsii output
2017-08-12 19:32:15 -07:00
bf1cabe0b0
Let gdsii output handle list-specified errors
2017-08-12 19:31:49 -07:00
b99509289a
Let layer be a tuple of ints (or just a single int like before)
2017-08-12 19:31:02 -07:00
0a7c26bb08
No need to subclass 'object' in python3
2017-08-12 19:30:31 -07:00
6cc6556e8a
typo fix
2017-04-20 13:05:58 -07:00
434178c853
correctly preserve total arc angle during normalize
2017-04-20 13:01:31 -07:00
2c159f2798
remove extra polygonize
2017-04-20 13:00:40 -07:00
ff76626e21
fix multiple bugs in arc and ellipse
2017-04-19 18:54:58 -07:00
jan
d355d84f6d
fix gds name mangling in cases with fractional dose
2016-10-19 16:59:20 -07:00
jan
103e72628c
Remove extra spaces
2016-10-19 16:52:40 -07:00
jan
3a460a9296
Add Text shape
...
Rendered using freetype-py and matplotlib
Can eliminate the matplotlib dependency if I write my own bezier code,
but that's work (and I already use matplotlib...).
2016-10-19 16:52:28 -07:00
jan
2a20a540b9
remove extra spaces
2016-03-16 15:16:01 -07:00
jan
5bf486ac81
Add all files to repository
2016-03-15 19:12:39 -07:00