Commit Graph

410 Commits

Author SHA1 Message Date
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
jan
bc557a54b7 fix typo in comment 2019-03-31 20:57:18 -07:00
jan
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
jan
539198435c Add .copy() and .deepcopy() convenience methods 2019-03-31 14:13:12 -07:00
jan
eb6a5d8e8c Add shapes.Polygon.rect() for simpler construction of various axis-aligned rectangles 2018-11-23 18:31:56 -08:00
jan
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
jan
a064e74fc1 Merge branch 'master' of mpxd.net:jan/masque 2018-09-16 20:37:44 -07:00
jan
d17cf5b6be label should have a list of 1 point 2018-09-16 20:35:14 -07:00
jan
f3115baabe Add get_cap_edges() 2018-09-16 20:33:55 -07:00
jan
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
jan
f3aa27a7c4 add missing import 2018-09-02 20:01:25 -07:00
jan
4498990545 Move version string into __init__ 2018-08-30 23:12:01 -07:00
jan
4fea49edef Add missing file (support for labels) 2018-08-30 23:07:14 -07:00
jan
86068102d9 Clarify that layer can be a tuple 2018-08-30 23:06:56 -07:00
jan
6bafaaf4fc Fix typo in arc docs 2018-08-30 23:06:45 -07:00
jan
108694551b add support for labels (e.g. GDS TEXT) 2018-08-30 23:06:31 -07:00
jan
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
jan
4840c321c5 rename param for do_subset 2018-04-18 07:48:08 -07:00
jan
6fda991700 Rewrite/fix apply() implementation 2018-04-18 07:47:50 -07:00
jan
082236b6fd add missing arg 2018-04-16 15:34:14 -07:00
jan
cc35ff802e clean up comments 2018-04-16 15:33:04 -07:00
jan
4c3250a2a1 add recursive option to subset 2018-04-16 15:32:15 -07:00
jan
f875ae89d7 make sure apply() only hits each pattern one 2018-04-16 15:31:18 -07:00
jan
52adb582dc copy name when using Pattern.subset() 2018-04-16 15:06:16 -07:00
jan
e38a530dee close paren in docstring 2018-04-16 14:55:19 -07:00
jan
1f17c07bef remove errant print 2018-04-16 14:55:01 -07:00
jan
79ac6a59e4 Fix mirror axis in Pattern.mirror() 2018-04-16 13:59:44 -07:00
jan
70f3ea9304 Handle mirrored gds shapes 2018-04-14 15:29:44 -07:00
jan
f580e784f7 Add mirroring functions to patterns/subpatterns 2018-04-14 15:29:19 -07:00
jan
d5a255a9d7 Add mirror() to shapes
Might need to fix ordering on Text.to_polygons()
2018-04-14 15:27:56 -07:00
jan
358f45c5fd Error out when we see absolute positioning in GDS
We don't support it (yet?)
2018-04-14 15:23:01 -07:00
jan
c14daf2e5e Fix GDS AREF handling 2018-04-14 15:20:39 -07:00
jan
0170f45f75 GDS stores rotation in degrees 2018-04-14 15:19:48 -07:00
jan
04ff11d3cb check for zero-length names 2018-04-14 15:06:12 -07:00
jan
37a55e0d9b Add deepcopy() convenience method to Pattern 2018-04-14 15:02:35 -07:00
jan
e4545bfa30 use is_scalar for checking if layer is a tuple 2018-04-14 15:02:13 -07:00
jan
3e06214b7e Add recursive "apply()" helper to pattern 2018-04-14 14:53:53 -07:00
jan
4c535e6564 return self from Text's scale_by and rotate 2018-04-14 14:38:42 -07:00
jan
eae57f7158 add set_bit 2018-04-14 14:34:34 -07:00
jan
3d7df45c2b fix get_bit docs 2018-04-14 14:34:26 -07:00
jan
e2b05d7c86 add fast approximate manhattanization function 2018-01-15 23:55:28 -08:00
jan
2ca27b0792 fix typo 2017-11-14 10:17:11 -08:00
jan
0fd0e259aa Merge branch 'master' of mpxd.net:jan/masque 2017-11-04 12:19:08 -07:00
jan
b7b0da7432 Allow writing a list of patterns to gds (multiple topcells) 2017-11-04 12:18:42 -07:00
jan
c451e93df0 Add option to check for invalid polygons when reading gds 2017-11-04 12:15:35 -07:00
jan
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
jan
83d163a102 fix typo 2017-09-08 14:26:27 -07:00
jan
f4b8f513d4 fix typos 2017-09-08 10:30:56 -07:00
jan
01395134ee Also clean vertices before cutting 2017-09-07 21:59:44 -07:00
jan
a817bf6642 Remove debug code 2017-09-06 21:04:57 -07:00
jan
10cd0778b8 Add copy() method to Shape 2017-09-06 21:04:44 -07:00
jan
723944018e add documentation to Polygon.cut() 2017-09-06 21:03:39 -07:00
jan
cea172e7f2 Make cut generate clean polygons 2017-09-06 21:03:23 -07:00
jan
4466198924 Add cut() function for polygon 2017-09-06 01:16:44 -07:00
jan
ffbaf8f4c4 Add manhattanization functionality 2017-09-06 01:16:24 -07:00
jan
3d52566016 Improve error handling 2017-09-06 01:14:46 -07:00
jan
934bfcd74e Clean up type info 2017-09-06 01:14:27 -07:00
jan
ccfd0f7f4f remove whitespace 2017-09-05 11:00:50 -07:00
jan
583dd7b018 allow caller to specify gdsii logical unit 2017-09-05 11:00:36 -07:00
jan
3b3ee216c2 add missing import 2017-08-29 16:55:58 -07:00
jan
3d89cd42a0 further fixes to ellipse bounding box 2017-08-29 16:55:06 -07:00
jan
85e2c662cc fix incomplete commit 2017-08-29 15:57:37 -07:00
jan
8256a540dc Use polar angle for ellipse bounds 2017-08-29 15:51:00 -07:00
jan
fdd18ca7d8 add functions for reading/writing tuple-valued layers to gds 2017-08-29 15:45:00 -07:00
jan
1127242aa0 fix typo 2017-08-24 15:35:10 -07:00
jan
dcf34536ad Improve docs for gdsii output 2017-08-12 19:32:15 -07:00
jan
bf1cabe0b0 Let gdsii output handle list-specified errors 2017-08-12 19:31:49 -07:00
jan
b99509289a Let layer be a tuple of ints (or just a single int like before) 2017-08-12 19:31:02 -07:00
jan
0a7c26bb08 No need to subclass 'object' in python3 2017-08-12 19:30:31 -07:00
jan
6cc6556e8a typo fix 2017-04-20 13:05:58 -07:00
jan
434178c853 correctly preserve total arc angle during normalize 2017-04-20 13:01:31 -07:00
jan
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