meerk40t 0.9.3001__py2.py3-none-any.whl → 0.9.7010__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- meerk40t/__init__.py +1 -1
- meerk40t/balormk/balor_params.py +167 -167
- meerk40t/balormk/clone_loader.py +457 -457
- meerk40t/balormk/controller.py +1566 -1512
- meerk40t/balormk/cylindermod.py +64 -0
- meerk40t/balormk/device.py +966 -1959
- meerk40t/balormk/driver.py +778 -591
- meerk40t/balormk/galvo_commands.py +1195 -0
- meerk40t/balormk/gui/balorconfig.py +237 -111
- meerk40t/balormk/gui/balorcontroller.py +191 -184
- meerk40t/balormk/gui/baloroperationproperties.py +116 -115
- meerk40t/balormk/gui/corscene.py +845 -0
- meerk40t/balormk/gui/gui.py +179 -147
- meerk40t/balormk/livelightjob.py +466 -382
- meerk40t/balormk/mock_connection.py +131 -109
- meerk40t/balormk/plugin.py +133 -135
- meerk40t/balormk/usb_connection.py +306 -301
- meerk40t/camera/__init__.py +1 -1
- meerk40t/camera/camera.py +514 -397
- meerk40t/camera/gui/camerapanel.py +1241 -1095
- meerk40t/camera/gui/gui.py +58 -58
- meerk40t/camera/plugin.py +441 -399
- meerk40t/ch341/__init__.py +27 -27
- meerk40t/ch341/ch341device.py +628 -628
- meerk40t/ch341/libusb.py +595 -589
- meerk40t/ch341/mock.py +171 -171
- meerk40t/ch341/windriver.py +157 -157
- meerk40t/constants.py +13 -0
- meerk40t/core/__init__.py +1 -1
- meerk40t/core/bindalias.py +550 -539
- meerk40t/core/core.py +47 -47
- meerk40t/core/cutcode/cubiccut.py +73 -73
- meerk40t/core/cutcode/cutcode.py +315 -312
- meerk40t/core/cutcode/cutgroup.py +141 -137
- meerk40t/core/cutcode/cutobject.py +192 -185
- meerk40t/core/cutcode/dwellcut.py +37 -37
- meerk40t/core/cutcode/gotocut.py +29 -29
- meerk40t/core/cutcode/homecut.py +29 -29
- meerk40t/core/cutcode/inputcut.py +34 -34
- meerk40t/core/cutcode/linecut.py +33 -33
- meerk40t/core/cutcode/outputcut.py +34 -34
- meerk40t/core/cutcode/plotcut.py +335 -335
- meerk40t/core/cutcode/quadcut.py +61 -61
- meerk40t/core/cutcode/rastercut.py +168 -148
- meerk40t/core/cutcode/waitcut.py +34 -34
- meerk40t/core/cutplan.py +1843 -1316
- meerk40t/core/drivers.py +330 -329
- meerk40t/core/elements/align.py +801 -669
- meerk40t/core/elements/branches.py +1844 -1507
- meerk40t/core/elements/clipboard.py +229 -219
- meerk40t/core/elements/element_treeops.py +4561 -2837
- meerk40t/core/elements/element_types.py +125 -105
- meerk40t/core/elements/elements.py +4329 -3617
- meerk40t/core/elements/files.py +117 -64
- meerk40t/core/elements/geometry.py +473 -224
- meerk40t/core/elements/grid.py +467 -316
- meerk40t/core/elements/materials.py +158 -94
- meerk40t/core/elements/notes.py +50 -38
- meerk40t/core/elements/offset_clpr.py +933 -912
- meerk40t/core/elements/offset_mk.py +963 -955
- meerk40t/core/elements/penbox.py +339 -267
- meerk40t/core/elements/placements.py +300 -83
- meerk40t/core/elements/render.py +785 -687
- meerk40t/core/elements/shapes.py +2618 -2092
- meerk40t/core/elements/trace.py +651 -563
- meerk40t/core/elements/tree_commands.py +415 -409
- meerk40t/core/elements/undo_redo.py +116 -58
- meerk40t/core/elements/wordlist.py +319 -200
- meerk40t/core/exceptions.py +9 -9
- meerk40t/core/laserjob.py +220 -220
- meerk40t/core/logging.py +63 -63
- meerk40t/core/node/blobnode.py +83 -86
- meerk40t/core/node/bootstrap.py +105 -103
- meerk40t/core/node/branch_elems.py +40 -31
- meerk40t/core/node/branch_ops.py +45 -38
- meerk40t/core/node/branch_regmark.py +48 -41
- meerk40t/core/node/cutnode.py +29 -32
- meerk40t/core/node/effect_hatch.py +375 -257
- meerk40t/core/node/effect_warp.py +398 -0
- meerk40t/core/node/effect_wobble.py +441 -309
- meerk40t/core/node/elem_ellipse.py +404 -309
- meerk40t/core/node/elem_image.py +1082 -801
- meerk40t/core/node/elem_line.py +358 -292
- meerk40t/core/node/elem_path.py +259 -201
- meerk40t/core/node/elem_point.py +129 -102
- meerk40t/core/node/elem_polyline.py +310 -246
- meerk40t/core/node/elem_rect.py +376 -286
- meerk40t/core/node/elem_text.py +445 -418
- meerk40t/core/node/filenode.py +59 -40
- meerk40t/core/node/groupnode.py +138 -74
- meerk40t/core/node/image_processed.py +777 -766
- meerk40t/core/node/image_raster.py +156 -113
- meerk40t/core/node/layernode.py +31 -31
- meerk40t/core/node/mixins.py +135 -107
- meerk40t/core/node/node.py +1427 -1304
- meerk40t/core/node/nutils.py +117 -114
- meerk40t/core/node/op_cut.py +462 -335
- meerk40t/core/node/op_dots.py +296 -251
- meerk40t/core/node/op_engrave.py +414 -311
- meerk40t/core/node/op_image.py +755 -369
- meerk40t/core/node/op_raster.py +787 -522
- meerk40t/core/node/place_current.py +37 -40
- meerk40t/core/node/place_point.py +329 -126
- meerk40t/core/node/refnode.py +58 -47
- meerk40t/core/node/rootnode.py +225 -219
- meerk40t/core/node/util_console.py +48 -48
- meerk40t/core/node/util_goto.py +84 -65
- meerk40t/core/node/util_home.py +61 -61
- meerk40t/core/node/util_input.py +102 -102
- meerk40t/core/node/util_output.py +102 -102
- meerk40t/core/node/util_wait.py +65 -65
- meerk40t/core/parameters.py +709 -707
- meerk40t/core/planner.py +875 -785
- meerk40t/core/plotplanner.py +656 -652
- meerk40t/core/space.py +120 -113
- meerk40t/core/spoolers.py +706 -705
- meerk40t/core/svg_io.py +1836 -1549
- meerk40t/core/treeop.py +534 -445
- meerk40t/core/undos.py +278 -124
- meerk40t/core/units.py +784 -680
- meerk40t/core/view.py +393 -322
- meerk40t/core/webhelp.py +62 -62
- meerk40t/core/wordlist.py +513 -504
- meerk40t/cylinder/cylinder.py +247 -0
- meerk40t/cylinder/gui/cylindersettings.py +41 -0
- meerk40t/cylinder/gui/gui.py +24 -0
- meerk40t/device/__init__.py +1 -1
- meerk40t/device/basedevice.py +322 -123
- meerk40t/device/devicechoices.py +50 -0
- meerk40t/device/dummydevice.py +163 -128
- meerk40t/device/gui/defaultactions.py +618 -602
- meerk40t/device/gui/effectspanel.py +114 -0
- meerk40t/device/gui/formatterpanel.py +253 -290
- meerk40t/device/gui/warningpanel.py +337 -260
- meerk40t/device/mixins.py +13 -13
- meerk40t/dxf/__init__.py +1 -1
- meerk40t/dxf/dxf_io.py +766 -554
- meerk40t/dxf/plugin.py +47 -35
- meerk40t/external_plugins.py +79 -79
- meerk40t/external_plugins_build.py +28 -28
- meerk40t/extra/cag.py +112 -116
- meerk40t/extra/coolant.py +403 -0
- meerk40t/extra/encode_detect.py +198 -0
- meerk40t/extra/ezd.py +1165 -1165
- meerk40t/extra/hershey.py +835 -340
- meerk40t/extra/imageactions.py +322 -316
- meerk40t/extra/inkscape.py +630 -622
- meerk40t/extra/lbrn.py +424 -424
- meerk40t/extra/outerworld.py +284 -0
- meerk40t/extra/param_functions.py +1542 -1556
- meerk40t/extra/potrace.py +257 -253
- meerk40t/extra/serial_exchange.py +118 -0
- meerk40t/extra/updater.py +602 -453
- meerk40t/extra/vectrace.py +147 -146
- meerk40t/extra/winsleep.py +83 -83
- meerk40t/extra/xcs_reader.py +597 -0
- meerk40t/fill/fills.py +781 -335
- meerk40t/fill/patternfill.py +1061 -1061
- meerk40t/fill/patterns.py +614 -567
- meerk40t/grbl/control.py +87 -87
- meerk40t/grbl/controller.py +990 -903
- meerk40t/grbl/device.py +1081 -768
- meerk40t/grbl/driver.py +989 -771
- meerk40t/grbl/emulator.py +532 -497
- meerk40t/grbl/gcodejob.py +783 -767
- meerk40t/grbl/gui/grblconfiguration.py +373 -298
- meerk40t/grbl/gui/grblcontroller.py +485 -271
- meerk40t/grbl/gui/grblhardwareconfig.py +269 -153
- meerk40t/grbl/gui/grbloperationconfig.py +105 -0
- meerk40t/grbl/gui/gui.py +147 -116
- meerk40t/grbl/interpreter.py +44 -44
- meerk40t/grbl/loader.py +22 -22
- meerk40t/grbl/mock_connection.py +56 -56
- meerk40t/grbl/plugin.py +294 -264
- meerk40t/grbl/serial_connection.py +93 -88
- meerk40t/grbl/tcp_connection.py +81 -79
- meerk40t/grbl/ws_connection.py +112 -0
- meerk40t/gui/__init__.py +1 -1
- meerk40t/gui/about.py +2042 -296
- meerk40t/gui/alignment.py +1644 -1608
- meerk40t/gui/autoexec.py +199 -0
- meerk40t/gui/basicops.py +791 -670
- meerk40t/gui/bufferview.py +77 -71
- meerk40t/gui/busy.py +170 -133
- meerk40t/gui/choicepropertypanel.py +1673 -1469
- meerk40t/gui/consolepanel.py +706 -542
- meerk40t/gui/devicepanel.py +687 -581
- meerk40t/gui/dialogoptions.py +110 -107
- meerk40t/gui/executejob.py +316 -306
- meerk40t/gui/fonts.py +90 -90
- meerk40t/gui/functionwrapper.py +252 -0
- meerk40t/gui/gui_mixins.py +729 -0
- meerk40t/gui/guicolors.py +205 -182
- meerk40t/gui/help_assets/help_assets.py +218 -201
- meerk40t/gui/helper.py +154 -0
- meerk40t/gui/hersheymanager.py +1430 -846
- meerk40t/gui/icons.py +3422 -2747
- meerk40t/gui/imagesplitter.py +555 -508
- meerk40t/gui/keymap.py +354 -344
- meerk40t/gui/laserpanel.py +892 -806
- meerk40t/gui/laserrender.py +1470 -1232
- meerk40t/gui/lasertoolpanel.py +805 -793
- meerk40t/gui/magnetoptions.py +436 -0
- meerk40t/gui/materialmanager.py +2917 -0
- meerk40t/gui/materialtest.py +1722 -1694
- meerk40t/gui/mkdebug.py +646 -359
- meerk40t/gui/mwindow.py +163 -140
- meerk40t/gui/navigationpanels.py +2605 -2467
- meerk40t/gui/notes.py +143 -142
- meerk40t/gui/opassignment.py +414 -410
- meerk40t/gui/operation_info.py +310 -299
- meerk40t/gui/plugin.py +494 -328
- meerk40t/gui/position.py +714 -669
- meerk40t/gui/preferences.py +901 -650
- meerk40t/gui/propertypanels/attributes.py +1461 -1131
- meerk40t/gui/propertypanels/blobproperty.py +117 -114
- meerk40t/gui/propertypanels/consoleproperty.py +83 -80
- meerk40t/gui/propertypanels/gotoproperty.py +77 -0
- meerk40t/gui/propertypanels/groupproperties.py +223 -217
- meerk40t/gui/propertypanels/hatchproperty.py +489 -469
- meerk40t/gui/propertypanels/imageproperty.py +2244 -1384
- meerk40t/gui/propertypanels/inputproperty.py +59 -58
- meerk40t/gui/propertypanels/opbranchproperties.py +82 -80
- meerk40t/gui/propertypanels/operationpropertymain.py +1890 -1638
- meerk40t/gui/propertypanels/outputproperty.py +59 -58
- meerk40t/gui/propertypanels/pathproperty.py +389 -380
- meerk40t/gui/propertypanels/placementproperty.py +1214 -383
- meerk40t/gui/propertypanels/pointproperty.py +140 -136
- meerk40t/gui/propertypanels/propertywindow.py +313 -181
- meerk40t/gui/propertypanels/rasterwizardpanels.py +996 -912
- meerk40t/gui/propertypanels/regbranchproperties.py +76 -0
- meerk40t/gui/propertypanels/textproperty.py +770 -755
- meerk40t/gui/propertypanels/waitproperty.py +56 -55
- meerk40t/gui/propertypanels/warpproperty.py +121 -0
- meerk40t/gui/propertypanels/wobbleproperty.py +255 -204
- meerk40t/gui/ribbon.py +2468 -2210
- meerk40t/gui/scene/scene.py +1100 -1051
- meerk40t/gui/scene/sceneconst.py +22 -22
- meerk40t/gui/scene/scenepanel.py +439 -349
- meerk40t/gui/scene/scenespacewidget.py +365 -365
- meerk40t/gui/scene/widget.py +518 -505
- meerk40t/gui/scenewidgets/affinemover.py +215 -215
- meerk40t/gui/scenewidgets/attractionwidget.py +315 -309
- meerk40t/gui/scenewidgets/bedwidget.py +120 -97
- meerk40t/gui/scenewidgets/elementswidget.py +137 -107
- meerk40t/gui/scenewidgets/gridwidget.py +785 -745
- meerk40t/gui/scenewidgets/guidewidget.py +765 -765
- meerk40t/gui/scenewidgets/laserpathwidget.py +66 -66
- meerk40t/gui/scenewidgets/machineoriginwidget.py +86 -86
- meerk40t/gui/scenewidgets/nodeselector.py +28 -28
- meerk40t/gui/scenewidgets/rectselectwidget.py +589 -346
- meerk40t/gui/scenewidgets/relocatewidget.py +33 -33
- meerk40t/gui/scenewidgets/reticlewidget.py +83 -83
- meerk40t/gui/scenewidgets/selectionwidget.py +2952 -2756
- meerk40t/gui/simpleui.py +357 -333
- meerk40t/gui/simulation.py +2431 -2094
- meerk40t/gui/snapoptions.py +208 -203
- meerk40t/gui/spoolerpanel.py +1227 -1180
- meerk40t/gui/statusbarwidgets/defaultoperations.py +480 -353
- meerk40t/gui/statusbarwidgets/infowidget.py +520 -483
- meerk40t/gui/statusbarwidgets/opassignwidget.py +356 -355
- meerk40t/gui/statusbarwidgets/selectionwidget.py +172 -171
- meerk40t/gui/statusbarwidgets/shapepropwidget.py +754 -236
- meerk40t/gui/statusbarwidgets/statusbar.py +272 -260
- meerk40t/gui/statusbarwidgets/statusbarwidget.py +268 -270
- meerk40t/gui/statusbarwidgets/strokewidget.py +267 -251
- meerk40t/gui/themes.py +200 -78
- meerk40t/gui/tips.py +591 -0
- meerk40t/gui/toolwidgets/circlebrush.py +35 -35
- meerk40t/gui/toolwidgets/toolcircle.py +248 -242
- meerk40t/gui/toolwidgets/toolcontainer.py +82 -77
- meerk40t/gui/toolwidgets/tooldraw.py +97 -90
- meerk40t/gui/toolwidgets/toolellipse.py +219 -212
- meerk40t/gui/toolwidgets/toolimagecut.py +25 -132
- meerk40t/gui/toolwidgets/toolline.py +39 -144
- meerk40t/gui/toolwidgets/toollinetext.py +79 -236
- meerk40t/gui/toolwidgets/toollinetext_inline.py +296 -0
- meerk40t/gui/toolwidgets/toolmeasure.py +160 -216
- meerk40t/gui/toolwidgets/toolnodeedit.py +2088 -2074
- meerk40t/gui/toolwidgets/toolnodemove.py +92 -94
- meerk40t/gui/toolwidgets/toolparameter.py +754 -668
- meerk40t/gui/toolwidgets/toolplacement.py +108 -108
- meerk40t/gui/toolwidgets/toolpoint.py +68 -59
- meerk40t/gui/toolwidgets/toolpointlistbuilder.py +294 -0
- meerk40t/gui/toolwidgets/toolpointmove.py +183 -0
- meerk40t/gui/toolwidgets/toolpolygon.py +288 -403
- meerk40t/gui/toolwidgets/toolpolyline.py +38 -196
- meerk40t/gui/toolwidgets/toolrect.py +211 -207
- meerk40t/gui/toolwidgets/toolrelocate.py +72 -72
- meerk40t/gui/toolwidgets/toolribbon.py +598 -113
- meerk40t/gui/toolwidgets/tooltabedit.py +546 -0
- meerk40t/gui/toolwidgets/tooltext.py +98 -89
- meerk40t/gui/toolwidgets/toolvector.py +213 -204
- meerk40t/gui/toolwidgets/toolwidget.py +39 -39
- meerk40t/gui/usbconnect.py +98 -91
- meerk40t/gui/utilitywidgets/buttonwidget.py +18 -18
- meerk40t/gui/utilitywidgets/checkboxwidget.py +90 -90
- meerk40t/gui/utilitywidgets/controlwidget.py +14 -14
- meerk40t/gui/utilitywidgets/cyclocycloidwidget.py +343 -340
- meerk40t/gui/utilitywidgets/debugwidgets.py +148 -0
- meerk40t/gui/utilitywidgets/handlewidget.py +27 -27
- meerk40t/gui/utilitywidgets/harmonograph.py +450 -447
- meerk40t/gui/utilitywidgets/openclosewidget.py +40 -40
- meerk40t/gui/utilitywidgets/rotationwidget.py +54 -54
- meerk40t/gui/utilitywidgets/scalewidget.py +75 -75
- meerk40t/gui/utilitywidgets/seekbarwidget.py +183 -183
- meerk40t/gui/utilitywidgets/togglewidget.py +142 -142
- meerk40t/gui/utilitywidgets/toolbarwidget.py +8 -8
- meerk40t/gui/wordlisteditor.py +985 -931
- meerk40t/gui/wxmeerk40t.py +1444 -1169
- meerk40t/gui/wxmmain.py +5578 -4112
- meerk40t/gui/wxmribbon.py +1591 -1076
- meerk40t/gui/wxmscene.py +1635 -1453
- meerk40t/gui/wxmtree.py +2410 -2089
- meerk40t/gui/wxutils.py +1769 -1099
- meerk40t/gui/zmatrix.py +102 -102
- meerk40t/image/__init__.py +1 -1
- meerk40t/image/dither.py +429 -0
- meerk40t/image/imagetools.py +2778 -2269
- meerk40t/internal_plugins.py +150 -130
- meerk40t/kernel/__init__.py +63 -12
- meerk40t/kernel/channel.py +259 -212
- meerk40t/kernel/context.py +538 -538
- meerk40t/kernel/exceptions.py +41 -41
- meerk40t/kernel/functions.py +463 -414
- meerk40t/kernel/jobs.py +100 -100
- meerk40t/kernel/kernel.py +3809 -3571
- meerk40t/kernel/lifecycles.py +71 -71
- meerk40t/kernel/module.py +49 -49
- meerk40t/kernel/service.py +147 -147
- meerk40t/kernel/settings.py +383 -343
- meerk40t/lihuiyu/controller.py +883 -876
- meerk40t/lihuiyu/device.py +1181 -1069
- meerk40t/lihuiyu/driver.py +1466 -1372
- meerk40t/lihuiyu/gui/gui.py +127 -106
- meerk40t/lihuiyu/gui/lhyaccelgui.py +377 -363
- meerk40t/lihuiyu/gui/lhycontrollergui.py +741 -651
- meerk40t/lihuiyu/gui/lhydrivergui.py +470 -446
- meerk40t/lihuiyu/gui/lhyoperationproperties.py +238 -237
- meerk40t/lihuiyu/gui/tcpcontroller.py +226 -190
- meerk40t/lihuiyu/interpreter.py +53 -53
- meerk40t/lihuiyu/laserspeed.py +450 -450
- meerk40t/lihuiyu/loader.py +90 -90
- meerk40t/lihuiyu/parser.py +404 -404
- meerk40t/lihuiyu/plugin.py +101 -102
- meerk40t/lihuiyu/tcp_connection.py +111 -109
- meerk40t/main.py +231 -165
- meerk40t/moshi/builder.py +788 -781
- meerk40t/moshi/controller.py +505 -499
- meerk40t/moshi/device.py +495 -442
- meerk40t/moshi/driver.py +862 -696
- meerk40t/moshi/gui/gui.py +78 -76
- meerk40t/moshi/gui/moshicontrollergui.py +538 -522
- meerk40t/moshi/gui/moshidrivergui.py +87 -75
- meerk40t/moshi/plugin.py +43 -43
- meerk40t/network/console_server.py +102 -57
- meerk40t/network/kernelserver.py +10 -9
- meerk40t/network/tcp_server.py +142 -140
- meerk40t/network/udp_server.py +103 -77
- meerk40t/network/web_server.py +390 -0
- meerk40t/newly/controller.py +1158 -1144
- meerk40t/newly/device.py +874 -732
- meerk40t/newly/driver.py +540 -412
- meerk40t/newly/gui/gui.py +219 -188
- meerk40t/newly/gui/newlyconfig.py +116 -101
- meerk40t/newly/gui/newlycontroller.py +193 -186
- meerk40t/newly/gui/operationproperties.py +51 -51
- meerk40t/newly/mock_connection.py +82 -82
- meerk40t/newly/newly_params.py +56 -56
- meerk40t/newly/plugin.py +1214 -1246
- meerk40t/newly/usb_connection.py +322 -322
- meerk40t/rotary/gui/gui.py +52 -46
- meerk40t/rotary/gui/rotarysettings.py +240 -232
- meerk40t/rotary/rotary.py +202 -98
- meerk40t/ruida/control.py +291 -91
- meerk40t/ruida/controller.py +138 -1088
- meerk40t/ruida/device.py +672 -231
- meerk40t/ruida/driver.py +534 -472
- meerk40t/ruida/emulator.py +1494 -1491
- meerk40t/ruida/exceptions.py +4 -4
- meerk40t/ruida/gui/gui.py +71 -76
- meerk40t/ruida/gui/ruidaconfig.py +239 -72
- meerk40t/ruida/gui/ruidacontroller.py +187 -184
- meerk40t/ruida/gui/ruidaoperationproperties.py +48 -47
- meerk40t/ruida/loader.py +54 -52
- meerk40t/ruida/mock_connection.py +57 -109
- meerk40t/ruida/plugin.py +124 -87
- meerk40t/ruida/rdjob.py +2084 -945
- meerk40t/ruida/serial_connection.py +116 -0
- meerk40t/ruida/tcp_connection.py +146 -0
- meerk40t/ruida/udp_connection.py +73 -0
- meerk40t/svgelements.py +9671 -9669
- meerk40t/tools/driver_to_path.py +584 -579
- meerk40t/tools/geomstr.py +5583 -4680
- meerk40t/tools/jhfparser.py +357 -292
- meerk40t/tools/kerftest.py +904 -890
- meerk40t/tools/livinghinges.py +1168 -1033
- meerk40t/tools/pathtools.py +987 -949
- meerk40t/tools/pmatrix.py +234 -0
- meerk40t/tools/pointfinder.py +942 -942
- meerk40t/tools/polybool.py +940 -940
- meerk40t/tools/rasterplotter.py +1660 -547
- meerk40t/tools/shxparser.py +989 -901
- meerk40t/tools/ttfparser.py +726 -446
- meerk40t/tools/zinglplotter.py +595 -593
- {meerk40t-0.9.3001.dist-info → meerk40t-0.9.7010.dist-info}/LICENSE +21 -21
- {meerk40t-0.9.3001.dist-info → meerk40t-0.9.7010.dist-info}/METADATA +150 -139
- meerk40t-0.9.7010.dist-info/RECORD +445 -0
- {meerk40t-0.9.3001.dist-info → meerk40t-0.9.7010.dist-info}/WHEEL +1 -1
- {meerk40t-0.9.3001.dist-info → meerk40t-0.9.7010.dist-info}/top_level.txt +0 -1
- {meerk40t-0.9.3001.dist-info → meerk40t-0.9.7010.dist-info}/zip-safe +1 -1
- meerk40t/balormk/elementlightjob.py +0 -159
- meerk40t-0.9.3001.dist-info/RECORD +0 -437
- test/bootstrap.py +0 -63
- test/test_cli.py +0 -12
- test/test_core_cutcode.py +0 -418
- test/test_core_elements.py +0 -144
- test/test_core_plotplanner.py +0 -397
- test/test_core_viewports.py +0 -312
- test/test_drivers_grbl.py +0 -108
- test/test_drivers_lihuiyu.py +0 -443
- test/test_drivers_newly.py +0 -113
- test/test_element_degenerate_points.py +0 -43
- test/test_elements_classify.py +0 -97
- test/test_elements_penbox.py +0 -22
- test/test_file_svg.py +0 -176
- test/test_fill.py +0 -155
- test/test_geomstr.py +0 -1523
- test/test_geomstr_nodes.py +0 -18
- test/test_imagetools_actualize.py +0 -306
- test/test_imagetools_wizard.py +0 -258
- test/test_kernel.py +0 -200
- test/test_laser_speeds.py +0 -3303
- test/test_length.py +0 -57
- test/test_lifecycle.py +0 -66
- test/test_operations.py +0 -251
- test/test_operations_hatch.py +0 -57
- test/test_ruida.py +0 -19
- test/test_spooler.py +0 -22
- test/test_tools_rasterplotter.py +0 -29
- test/test_wobble.py +0 -133
- test/test_zingl.py +0 -124
- {test → meerk40t/cylinder}/__init__.py +0 -0
- /meerk40t/{core/element_commands.py → cylinder/gui/__init__.py} +0 -0
- {meerk40t-0.9.3001.dist-info → meerk40t-0.9.7010.dist-info}/entry_points.txt +0 -0
test/test_geomstr_nodes.py
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
import unittest
|
2
|
-
|
3
|
-
from meerk40t.core.node.elem_polyline import PolylineNode
|
4
|
-
from meerk40t.tools.geomstr import Geomstr
|
5
|
-
|
6
|
-
|
7
|
-
class TestGeomstr(unittest.TestCase):
|
8
|
-
"""These tests ensure the basic functions of the Geomstr node types"""
|
9
|
-
|
10
|
-
def test_polynode_points(self):
|
11
|
-
node = PolylineNode(Geomstr.lines(0, 0, 1, 1, 2, 2, 3, 3, 4, 4))
|
12
|
-
self.assertEqual(len(node.geometry), 4)
|
13
|
-
node = PolylineNode(0, 0, 1, 1, 2, 2, 3, 3, 4, 4)
|
14
|
-
self.assertEqual(len(node.geometry), 4)
|
15
|
-
|
16
|
-
def test_polynode_revalidate(self):
|
17
|
-
node = PolylineNode(Geomstr.lines(0, 0, 1, 1, 2, 2, 3, 3, 4, 4))
|
18
|
-
node.revalidate_points()
|
@@ -1,306 +0,0 @@
|
|
1
|
-
import unittest
|
2
|
-
from test import bootstrap
|
3
|
-
|
4
|
-
from PIL import Image, ImageDraw
|
5
|
-
|
6
|
-
from meerk40t.core.node.elem_image import ImageNode
|
7
|
-
from meerk40t.svgelements import Matrix
|
8
|
-
|
9
|
-
|
10
|
-
class TestActualize(unittest.TestCase):
|
11
|
-
# def test_actualize_smallcircle(self):
|
12
|
-
# """
|
13
|
-
# Test that a small circle in an image actualizes correctly
|
14
|
-
#
|
15
|
-
# :return:
|
16
|
-
# """
|
17
|
-
# kernel = bootstrap.bootstrap()
|
18
|
-
# try:
|
19
|
-
# kernel_root = kernel.get_context("/")
|
20
|
-
# # kernel_root("channel print console\n")
|
21
|
-
# image = Image.new("RGBA", (256, 256), "white")
|
22
|
-
# draw = ImageDraw.Draw(image)
|
23
|
-
# draw.ellipse((100, 100, 105, 105), "black")
|
24
|
-
# elements = kernel_root.elements
|
25
|
-
# node = elements.elem_branch.add(image=image, matrix=Matrix(), dpi=1000.0, type="elem image")
|
26
|
-
# node.emphasized = True
|
27
|
-
# kernel_root("image resample\n")
|
28
|
-
# for element in kernel_root.elements.elems():
|
29
|
-
# if node.type == "elem image":
|
30
|
-
# self.assertEqual(element.image.size, (6, 6))
|
31
|
-
# self.assertEqual(element.matrix.value_trans_x(), 100)
|
32
|
-
# self.assertEqual(element.matrix.value_trans_y(), 100)
|
33
|
-
# finally:
|
34
|
-
# kernel.shutdown()
|
35
|
-
|
36
|
-
# def test_actualize_smallcircle_step3(self):
|
37
|
-
# """
|
38
|
-
# Test that a small circle in an image actualizes correctly
|
39
|
-
#
|
40
|
-
# :return:
|
41
|
-
# """
|
42
|
-
# kernel = bootstrap.bootstrap()
|
43
|
-
# try:
|
44
|
-
# kernel_root = kernel.get_context("/")
|
45
|
-
# # kernel_root("channel print console\n")
|
46
|
-
# image = Image.new("RGBA", (256, 256), "white")
|
47
|
-
# elements = kernel_root.elements
|
48
|
-
# node = elements.elem_branch.add(image=image, matrix=Matrix(), dpi=1000.0, type="elem image")
|
49
|
-
# node.step_x = 3
|
50
|
-
# node.step_y = 3
|
51
|
-
# draw = ImageDraw.Draw(image)
|
52
|
-
# draw.ellipse((100, 100, 105, 105), "black")
|
53
|
-
# node.emphasized = True
|
54
|
-
# kernel_root("image resample\n")
|
55
|
-
# for element in kernel_root.elements.elems():
|
56
|
-
# if node.type == "elem image":
|
57
|
-
# self.assertEqual(
|
58
|
-
# element.image.size,
|
59
|
-
# (
|
60
|
-
# 6 / node.step_x,
|
61
|
-
# 6 / node.step_y,
|
62
|
-
# ),
|
63
|
-
# )
|
64
|
-
# self.assertEqual(
|
65
|
-
# element.matrix.value_scale_x(),
|
66
|
-
# node.step_x,
|
67
|
-
# )
|
68
|
-
# self.assertEqual(
|
69
|
-
# element.matrix.value_scale_y(),
|
70
|
-
# node.step_y,
|
71
|
-
# )
|
72
|
-
# self.assertEqual(element.matrix.value_trans_x(), 100)
|
73
|
-
# self.assertEqual(element.matrix.value_trans_y(), 100)
|
74
|
-
# finally:
|
75
|
-
# kernel.shutdown()
|
76
|
-
|
77
|
-
# def test_actualize_transparent_colorvalue_wb(self):
|
78
|
-
# """
|
79
|
-
# Tests that black transparent and white transparent and all grays are treated correctly.
|
80
|
-
# Black transparent is black with alpha=0, white transparent is white with alpha=0. If a process
|
81
|
-
# strips the alpha rather than composing it correctly can produce wrong results.
|
82
|
-
#
|
83
|
-
# :return:
|
84
|
-
# """
|
85
|
-
# kernel = bootstrap.bootstrap()
|
86
|
-
# try:
|
87
|
-
# kernel_root = kernel.get_context("/")
|
88
|
-
# # kernel_root("channel print console\n")
|
89
|
-
# for component in range(256):
|
90
|
-
# # each color is a different shade of gray, all marked fully transparent.
|
91
|
-
# image = Image.new(
|
92
|
-
# "RGBA", (256, 256), (component, component, component, 0)
|
93
|
-
# )
|
94
|
-
# draw = ImageDraw.Draw(image)
|
95
|
-
# draw.ellipse((50, 50, 150, 150), "white")
|
96
|
-
# draw.ellipse((100, 100, 105, 105), "black")
|
97
|
-
# elements = kernel_root.elements
|
98
|
-
# node = elements.elem_branch.add(image=image, matrix=Matrix(), dpi=1000.0/3.0, type="elem image")
|
99
|
-
# node.emphasized = True
|
100
|
-
# kernel_root("image resample\n")
|
101
|
-
# for node in kernel_root.elements.elems():
|
102
|
-
# if node.type == "elem image":
|
103
|
-
# self.assertEqual(
|
104
|
-
# node.image.size,
|
105
|
-
# (
|
106
|
-
# 6 / node.step_x,
|
107
|
-
# 6 / node.step_y,
|
108
|
-
# ),
|
109
|
-
# )
|
110
|
-
# self.assertEqual(
|
111
|
-
# node.matrix.value_scale_x(),
|
112
|
-
# node.step_x,
|
113
|
-
# )
|
114
|
-
# self.assertEqual(
|
115
|
-
# node.matrix.value_scale_y(),
|
116
|
-
# node.step_y,
|
117
|
-
# )
|
118
|
-
# self.assertEqual(node.matrix.value_trans_x(), 100)
|
119
|
-
# self.assertEqual(node.matrix.value_trans_y(), 100)
|
120
|
-
# finally:
|
121
|
-
# kernel.shutdown()
|
122
|
-
|
123
|
-
# def test_actualize_transparent_colorvalue_bw(self):
|
124
|
-
# """
|
125
|
-
# Tests that black transparent and white transparent and all grays are treated correctly.
|
126
|
-
# Black transparent is black with alpha=0, white transparent is white with alpha=0. If a process
|
127
|
-
# strips the alpha rather than composing it correctly can produce wrong results.
|
128
|
-
#
|
129
|
-
# :return:
|
130
|
-
# """
|
131
|
-
# kernel = bootstrap.bootstrap()
|
132
|
-
# try:
|
133
|
-
# kernel_root = kernel.get_context("/")
|
134
|
-
# # kernel_root("channel print console\n")
|
135
|
-
# for component in range(256):
|
136
|
-
# # each color is a different shade of gray, all marked fully transparent.
|
137
|
-
# image = Image.new(
|
138
|
-
# "RGBA", (256, 256), (component, component, component, 0)
|
139
|
-
# )
|
140
|
-
# draw = ImageDraw.Draw(image)
|
141
|
-
# draw.ellipse((50, 50, 150, 150), "black")
|
142
|
-
# draw.ellipse((100, 100, 105, 105), "white")
|
143
|
-
# elements = kernel_root.elements
|
144
|
-
# node = elements.elem_branch.add(image=image, matrix=Matrix(), dpi=1000.0/3.0, type="elem image")
|
145
|
-
# node.emphasized = True
|
146
|
-
# kernel_root("image resample\n")
|
147
|
-
# for node in kernel_root.elements.elems():
|
148
|
-
# if node.type == "elem image":
|
149
|
-
# self.assertEqual(
|
150
|
-
# node.image.size,
|
151
|
-
# (
|
152
|
-
# ceil(101 / node.step_x),
|
153
|
-
# ceil(101 / node.step_y),
|
154
|
-
# ),
|
155
|
-
# )
|
156
|
-
# self.assertEqual(
|
157
|
-
# node.matrix.value_scale_x(),
|
158
|
-
# node.step_x,
|
159
|
-
# )
|
160
|
-
# self.assertEqual(
|
161
|
-
# node.matrix.value_scale_y(),
|
162
|
-
# node.step_y,
|
163
|
-
# )
|
164
|
-
# self.assertEqual(node.matrix.value_trans_x(), 50)
|
165
|
-
# self.assertEqual(node.matrix.value_trans_y(), 50)
|
166
|
-
# # Test corner for whiteness.
|
167
|
-
# self.assertEqual(node.image.getpixel((-1, -1)), 255)
|
168
|
-
# finally:
|
169
|
-
# kernel.shutdown()
|
170
|
-
|
171
|
-
def test_actualize_circle_step3_direct_transparent(self):
|
172
|
-
"""
|
173
|
-
Test for edge pixel error. White empty.
|
174
|
-
|
175
|
-
:return:
|
176
|
-
"""
|
177
|
-
for component in range(256):
|
178
|
-
image = Image.new("RGBA", (256, 256), (component, component, component, 0))
|
179
|
-
draw = ImageDraw.Draw(image)
|
180
|
-
draw.ellipse((100, 100, 150, 150), "black")
|
181
|
-
|
182
|
-
for step in range(1, 20):
|
183
|
-
transform = Matrix()
|
184
|
-
node = ImageNode(image=image, matrix=transform)
|
185
|
-
node.step_x = step
|
186
|
-
node.step_y = step
|
187
|
-
node.process_image(crop=False)
|
188
|
-
self.assertEqual(node._processed_image.getpixel((-1, -1)), 255)
|
189
|
-
|
190
|
-
def test_actualize_circle_step3_direct_white(self):
|
191
|
-
"""
|
192
|
-
Test for edge pixel error. White empty.
|
193
|
-
|
194
|
-
:return:
|
195
|
-
"""
|
196
|
-
image = Image.new("RGBA", (256, 256), "white")
|
197
|
-
draw = ImageDraw.Draw(image)
|
198
|
-
draw.ellipse((100, 100, 150, 150), "black")
|
199
|
-
|
200
|
-
for step in range(1, 20):
|
201
|
-
transform = Matrix()
|
202
|
-
node = ImageNode(image=image, matrix=transform)
|
203
|
-
node.step_x = step
|
204
|
-
node.step_y = step
|
205
|
-
node.process_image(crop=False)
|
206
|
-
self.assertEqual(node._processed_image.getpixel((-1, -1)), 255)
|
207
|
-
|
208
|
-
def test_actualize_circle_step3_direct_black(self):
|
209
|
-
"""
|
210
|
-
Test for edge pixel error. Black Empty.
|
211
|
-
|
212
|
-
:return:
|
213
|
-
"""
|
214
|
-
image = Image.new("RGBA", (256, 256), "black")
|
215
|
-
draw = ImageDraw.Draw(image)
|
216
|
-
draw.ellipse((100, 100, 150, 150), "white")
|
217
|
-
transform = Matrix()
|
218
|
-
|
219
|
-
for step in range(1, 20):
|
220
|
-
node = ImageNode(image=image, matrix=transform)
|
221
|
-
node.step_x = step
|
222
|
-
node.step_y = step
|
223
|
-
node.invert = True
|
224
|
-
node.process_image(crop=False)
|
225
|
-
self.assertEqual(node._processed_image.getpixel((-1, -1)), 255)
|
226
|
-
|
227
|
-
# Note: inverted flag not set. White edge pixel is correct.
|
228
|
-
node = ImageNode(image=image, matrix=transform)
|
229
|
-
node.step_x = 3
|
230
|
-
node.step_y = 3
|
231
|
-
node.process_image(crop=False)
|
232
|
-
self.assertEqual(node._processed_image.getpixel((-1, -1)), 255)
|
233
|
-
|
234
|
-
# def test_actualize_largecircle(self):
|
235
|
-
# """
|
236
|
-
# Test that a small circle in an image actualizes correctly
|
237
|
-
#
|
238
|
-
# :return:
|
239
|
-
# """
|
240
|
-
# kernel = bootstrap.bootstrap()
|
241
|
-
# try:
|
242
|
-
# kernel_root = kernel.get_context("/")
|
243
|
-
# image = Image.new("RGBA", (256, 256), "white")
|
244
|
-
# draw = ImageDraw.Draw(image)
|
245
|
-
# draw.ellipse((0, 0, 256, 256), "black")
|
246
|
-
# elements = kernel_root.elements
|
247
|
-
# node = elements.elem_branch.add(image=image, matrix=Matrix(), dpi=1000.0, type="elem image")
|
248
|
-
# node.emphasized = True
|
249
|
-
# kernel_root("image resample\n")
|
250
|
-
# for node in kernel_root.elements.elems():
|
251
|
-
# if node.type == "elem image":
|
252
|
-
# self.assertEqual(node.image.size, (256, 256))
|
253
|
-
# self.assertEqual(node.matrix.value_trans_x(), 0)
|
254
|
-
# self.assertEqual(node.matrix.value_trans_y(), 0)
|
255
|
-
# finally:
|
256
|
-
# kernel.shutdown()
|
257
|
-
|
258
|
-
def test_actualize_purewhite(self):
|
259
|
-
"""
|
260
|
-
Test that a pure white image does not crash.
|
261
|
-
|
262
|
-
:return:
|
263
|
-
"""
|
264
|
-
kernel = bootstrap.bootstrap()
|
265
|
-
try:
|
266
|
-
kernel_root = kernel.get_context("/")
|
267
|
-
# kernel_root("channel print console\n")
|
268
|
-
image = Image.new("RGBA", (256, 256), "white")
|
269
|
-
elements = kernel_root.elements
|
270
|
-
node = elements.elem_branch.add(
|
271
|
-
image=image, matrix=Matrix(), dpi=1000.0, type="elem image"
|
272
|
-
)
|
273
|
-
node.emphasized = True
|
274
|
-
kernel_root("image resample\n")
|
275
|
-
for element in kernel_root.elements.elems():
|
276
|
-
if node.type == "elem image":
|
277
|
-
self.assertEqual(element.image.size, (256, 256))
|
278
|
-
self.assertEqual(element.matrix.value_trans_x(), 0)
|
279
|
-
self.assertEqual(element.matrix.value_trans_y(), 0)
|
280
|
-
finally:
|
281
|
-
kernel.shutdown()
|
282
|
-
|
283
|
-
def test_actualize_pureblack(self):
|
284
|
-
"""
|
285
|
-
Test that a pure black image does not crash.
|
286
|
-
|
287
|
-
:return:
|
288
|
-
"""
|
289
|
-
kernel = bootstrap.bootstrap()
|
290
|
-
try:
|
291
|
-
kernel_root = kernel.get_context("/")
|
292
|
-
# kernel_root("channel print console\n")
|
293
|
-
image = Image.new("RGBA", (256, 256), "black")
|
294
|
-
elements = kernel_root.elements
|
295
|
-
node = elements.elem_branch.add(
|
296
|
-
image=image, dpi=1000.0, matrix=Matrix(), type="elem image"
|
297
|
-
)
|
298
|
-
node.emphasized = True
|
299
|
-
kernel_root("image resample\n")
|
300
|
-
for element in kernel_root.elements.elems():
|
301
|
-
if node.type == "elem image":
|
302
|
-
self.assertEqual(element.image.size, (256, 256))
|
303
|
-
self.assertEqual(element.matrix.value_trans_x(), 0)
|
304
|
-
self.assertEqual(element.matrix.value_trans_y(), 0)
|
305
|
-
finally:
|
306
|
-
kernel.shutdown()
|
test/test_imagetools_wizard.py
DELETED
@@ -1,258 +0,0 @@
|
|
1
|
-
import unittest
|
2
|
-
from math import floor
|
3
|
-
from test import bootstrap
|
4
|
-
|
5
|
-
from PIL import Image, ImageDraw
|
6
|
-
|
7
|
-
from meerk40t.svgelements import Matrix, SVGImage
|
8
|
-
|
9
|
-
|
10
|
-
class TestRasterWizard(unittest.TestCase):
|
11
|
-
pass
|
12
|
-
|
13
|
-
# def test_rasterwizard_smallcircle(self):
|
14
|
-
# """
|
15
|
-
# Test that a small circle in an image wizards correctly
|
16
|
-
#
|
17
|
-
# :return:
|
18
|
-
# """
|
19
|
-
# kernel = bootstrap.bootstrap()
|
20
|
-
# try:
|
21
|
-
# kernel_root = kernel.get_context("/")
|
22
|
-
# # kernel_root("channel print console\n")
|
23
|
-
# image = Image.new("RGBA", (256, 256), "white")
|
24
|
-
# draw = ImageDraw.Draw(image)
|
25
|
-
# draw.ellipse((100, 100, 105, 105), "black")
|
26
|
-
# elements = kernel_root.elements
|
27
|
-
# node = elements.elem_branch.add(image=image, matrix=Matrix(), dpi=1000.0, type="elem image")
|
28
|
-
# node.emphasized = True
|
29
|
-
# kernel_root("image wizard Gravy\n")
|
30
|
-
# for node in kernel_root.elements.elems():
|
31
|
-
# if node.type == "elem image":
|
32
|
-
# self.assertEqual(
|
33
|
-
# node.image.size, (2, 2)
|
34
|
-
# ) # Gravy is step=3 by default
|
35
|
-
# self.assertEqual(node.matrix.value_trans_x(), 100)
|
36
|
-
# self.assertEqual(node.matrix.value_trans_y(), 100)
|
37
|
-
# finally:
|
38
|
-
# kernel.shutdown()
|
39
|
-
|
40
|
-
# def test_rasterwizard_smallcircle_step3(self):
|
41
|
-
# """
|
42
|
-
# Test that a small circle in an image wizards correctly
|
43
|
-
#
|
44
|
-
# :return:
|
45
|
-
# """
|
46
|
-
# kernel = bootstrap.bootstrap()
|
47
|
-
# try:
|
48
|
-
# kernel_root = kernel.get_context("/")
|
49
|
-
# # kernel_root("channel print console\n")
|
50
|
-
# image = Image.new("RGBA", (256, 256), "white")
|
51
|
-
# draw = ImageDraw.Draw(image)
|
52
|
-
# draw.ellipse((100, 100, 105, 105), "black")
|
53
|
-
# elements = kernel_root.elements
|
54
|
-
# node = elements.elem_branch.add(image=image, matrix=Matrix(), dpi=1000.0/3.0, type="elem image")
|
55
|
-
# node.emphasized = True
|
56
|
-
# kernel_root("image wizard Gravy\n")
|
57
|
-
# for node in kernel_root.elements.elems():
|
58
|
-
# if node.type == "elem image":
|
59
|
-
# self.assertEqual(
|
60
|
-
# node.image.size, (2, 2)
|
61
|
-
# ) # Gravy is step=3 by default
|
62
|
-
# self.assertEqual(
|
63
|
-
# node.matrix.value_scale_x(),
|
64
|
-
# node.step_x,
|
65
|
-
# )
|
66
|
-
# self.assertEqual(
|
67
|
-
# node.matrix.value_scale_y(),
|
68
|
-
# node.step_y,
|
69
|
-
# )
|
70
|
-
# self.assertEqual(node.matrix.value_trans_x(), 100)
|
71
|
-
# self.assertEqual(node.matrix.value_trans_y(), 100)
|
72
|
-
# finally:
|
73
|
-
# kernel.shutdown()
|
74
|
-
|
75
|
-
# def test_rasterwizard_image_types(self):
|
76
|
-
# """
|
77
|
-
# Test that different images modes work without error.
|
78
|
-
#
|
79
|
-
# :return:
|
80
|
-
# """
|
81
|
-
# kernel = bootstrap.bootstrap()
|
82
|
-
# try:
|
83
|
-
# kernel_root = kernel.get_context("/")
|
84
|
-
# # kernel_root("channel print console\n")
|
85
|
-
# for script in kernel.match("raster_script/.*", suffix=True):
|
86
|
-
# for mode in ("RGBA", "RGB", "L", "1", "P", "F", "LA", "HSV"):
|
87
|
-
# image = Image.new("RGBA", (256, 256), "white")
|
88
|
-
# draw = ImageDraw.Draw(image)
|
89
|
-
# draw.ellipse((50, 50, 150, 150), "black")
|
90
|
-
# draw.ellipse((75, 75, 125, 125), "blue")
|
91
|
-
# draw.ellipse((95, 95, 105, 105), "green")
|
92
|
-
# image = image.convert(mode)
|
93
|
-
# elements = kernel_root.elements
|
94
|
-
# node = elements.elem_branch.add(image=image, matrix=Matrix(), dpi=1000.0, type="elem image")
|
95
|
-
# node.emphasized = True
|
96
|
-
# kernel_root("image wizard %s\n" % script)
|
97
|
-
# # Solve for step.
|
98
|
-
# dpi = 1
|
99
|
-
# for op in kernel_root.lookup("raster_script", script):
|
100
|
-
# if op["name"] == "resample" and op["enable"]:
|
101
|
-
# dpi = op["dpi"]
|
102
|
-
# step = 1000 / dpi
|
103
|
-
# for node in kernel_root.elements.elems():
|
104
|
-
# if node.type == "elem image":
|
105
|
-
# self.assertEqual(
|
106
|
-
# node.matrix.value_scale_x(),
|
107
|
-
# step,
|
108
|
-
# )
|
109
|
-
# self.assertEqual(
|
110
|
-
# node.matrix.value_scale_y(),
|
111
|
-
# step,
|
112
|
-
# )
|
113
|
-
# self.assertEqual(node.matrix.value_trans_x(), 50)
|
114
|
-
# self.assertEqual(node.matrix.value_trans_y(), 50)
|
115
|
-
# kernel_root("element* delete\n")
|
116
|
-
# finally:
|
117
|
-
# kernel.shutdown()
|
118
|
-
|
119
|
-
# def test_rasterwizard_transparent_colorvalue_wb(self):
|
120
|
-
# """
|
121
|
-
# Tests that black transparent and white transparent and all grays are treated correctly.
|
122
|
-
# Black transparent is black with alpha=0, white transparent is white with alpha=0. If a process
|
123
|
-
# strips the alpha rather than composing it correctly can produce wrong results.
|
124
|
-
#
|
125
|
-
# :return:
|
126
|
-
# """
|
127
|
-
# kernel = bootstrap.bootstrap()
|
128
|
-
# try:
|
129
|
-
# kernel_root = kernel.get_context("/")
|
130
|
-
# # kernel_root("channel print console\n")
|
131
|
-
# for component in range(256):
|
132
|
-
# # each color is a different shade of gray, all marked fully transparent.
|
133
|
-
# image = Image.new(
|
134
|
-
# "RGBA", (256, 256), (component, component, component, 0)
|
135
|
-
# )
|
136
|
-
# draw = ImageDraw.Draw(image)
|
137
|
-
# draw.rectangle((50, 50, 150, 150), "white")
|
138
|
-
# draw.ellipse((100, 100, 105, 105), "black")
|
139
|
-
# elements = kernel_root.elements
|
140
|
-
# node = elements.elem_branch.add(image=image, matrix=Matrix(), dpi=1000.0/3.0, type="elem image")
|
141
|
-
# node.emphasized = True
|
142
|
-
# kernel_root("image wizard Gravy\n")
|
143
|
-
# for node in kernel_root.elements.elems():
|
144
|
-
# if node.type == "elem image":
|
145
|
-
# self.assertEqual(
|
146
|
-
# node.image.size, (2, 2)
|
147
|
-
# ) # Gravy is step=3 by default
|
148
|
-
# self.assertEqual(
|
149
|
-
# node.matrix.value_scale_x(),
|
150
|
-
# 3,
|
151
|
-
# )
|
152
|
-
# self.assertEqual(
|
153
|
-
# node.matrix.value_scale_y(),
|
154
|
-
# 3,
|
155
|
-
# )
|
156
|
-
# self.assertEqual(node.matrix.value_trans_x(), 100)
|
157
|
-
# self.assertEqual(node.matrix.value_trans_y(), 100)
|
158
|
-
# finally:
|
159
|
-
# kernel.shutdown()
|
160
|
-
|
161
|
-
# def test_rasterwizard_transparent_colorvalue_bw(self):
|
162
|
-
# """
|
163
|
-
# Tests that black transparent and white transparent and all grays are treated correctly.
|
164
|
-
# Black transparent is black with alpha=0, white transparent is white with alpha=0. If a process
|
165
|
-
# strips the alpha rather than composing it correctly can produce wrong results.
|
166
|
-
#
|
167
|
-
# :return:
|
168
|
-
# """
|
169
|
-
# kernel = bootstrap.bootstrap()
|
170
|
-
# try:
|
171
|
-
# kernel_root = kernel.get_context("/")
|
172
|
-
# # kernel_root("channel print console\n")
|
173
|
-
# for component in range(256):
|
174
|
-
# # each color is a different shade of gray, all marked fully transparent.
|
175
|
-
# image = Image.new(
|
176
|
-
# "RGBA", (256, 256), (component, component, component, 0)
|
177
|
-
# )
|
178
|
-
# draw = ImageDraw.Draw(image)
|
179
|
-
# draw.ellipse((50, 50, 150, 150), "black")
|
180
|
-
# draw.ellipse((100, 100, 105, 105), "white")
|
181
|
-
# elements = kernel_root.elements
|
182
|
-
# node = elements.elem_branch.add(image=image, matrix=Matrix(), dpi=1000.0/3.0, type="elem image")
|
183
|
-
# node.emphasized = True
|
184
|
-
# kernel_root("image wizard Gravy\n")
|
185
|
-
# for node in kernel_root.elements.elems():
|
186
|
-
# if node.type == "elem image":
|
187
|
-
# self.assertEqual(
|
188
|
-
# node.image.size, (34, 34)
|
189
|
-
# ) # Gravy is step=3 by default
|
190
|
-
# self.assertEqual(
|
191
|
-
# node.matrix.value_scale_x(),
|
192
|
-
# 3,
|
193
|
-
# )
|
194
|
-
# self.assertEqual(
|
195
|
-
# node.matrix.value_scale_y(),
|
196
|
-
# 3,
|
197
|
-
# )
|
198
|
-
# self.assertEqual(node.matrix.value_trans_x(), 50)
|
199
|
-
# self.assertEqual(node.matrix.value_trans_y(), 50)
|
200
|
-
# # Test corner for whiteness.
|
201
|
-
# self.assertEqual(node.image.getpixel((-1, -1)), 255)
|
202
|
-
# finally:
|
203
|
-
# kernel.shutdown()
|
204
|
-
|
205
|
-
# def test_rasterwizard_purewhite(self):
|
206
|
-
# """
|
207
|
-
# Test that a pure white image does not crash.
|
208
|
-
#
|
209
|
-
# :return:
|
210
|
-
# """
|
211
|
-
# kernel = bootstrap.bootstrap()
|
212
|
-
# try:
|
213
|
-
# kernel_root = kernel.get_context("/")
|
214
|
-
# # kernel_root("channel print console\n")
|
215
|
-
# image = Image.new("RGBA", (256, 256), "white")
|
216
|
-
# elements = kernel_root.elements
|
217
|
-
# node = elements.elem_branch.add(image=image, matrix=Matrix(), dpi=1000.0, type="elem image")
|
218
|
-
# node.emphasized = True
|
219
|
-
# kernel_root("image wizard Gravy\n")
|
220
|
-
# for node in kernel_root.elements.elems():
|
221
|
-
# if node.type == "elem image":
|
222
|
-
# self.assertEqual(
|
223
|
-
# node.image.size, (floor(256 / 3) + 1, floor(256 / 3) + 1)
|
224
|
-
# )
|
225
|
-
# # Gravy is default 3 step.
|
226
|
-
# # Remainder line is added to edge, so + 1
|
227
|
-
# self.assertEqual(node.matrix.value_trans_x(), 0)
|
228
|
-
# self.assertEqual(node.matrix.value_trans_y(), 0)
|
229
|
-
# finally:
|
230
|
-
# kernel.shutdown()
|
231
|
-
|
232
|
-
# def test_rasterwizard_pureblack(self):
|
233
|
-
# """
|
234
|
-
# Test that a pure black image does not crash.
|
235
|
-
#
|
236
|
-
# :return:
|
237
|
-
# """
|
238
|
-
# kernel = bootstrap.bootstrap()
|
239
|
-
# try:
|
240
|
-
# kernel_root = kernel.get_context("/")
|
241
|
-
# # kernel_root("channel print console\n")
|
242
|
-
# image = Image.new("RGBA", (256, 256), "black")
|
243
|
-
# elements = kernel_root.elements
|
244
|
-
# node = elements.elem_branch.add(image=image, matrix=Matrix(), dpi=1000.0, type="elem image")
|
245
|
-
# node.emphasized = True
|
246
|
-
# kernel_root("image wizard Gravy\n")
|
247
|
-
# for node in kernel_root.elements.elems():
|
248
|
-
# if node.type == "elem image":
|
249
|
-
# self.assertEqual(
|
250
|
-
# node.image.size, (floor(256 / 3), floor(256 / 3))
|
251
|
-
# )
|
252
|
-
# # Gravy is default 3 step.
|
253
|
-
# # Default non-inverted gives white line at edge which is cropped, therefore floor()
|
254
|
-
# # since the additional line does not count as part of the image.
|
255
|
-
# self.assertEqual(node.matrix.value_trans_x(), 0)
|
256
|
-
# self.assertEqual(node.matrix.value_trans_y(), 0)
|
257
|
-
# finally:
|
258
|
-
# kernel.shutdown()
|