├── .gitignore ├── MIT-LICENSE ├── NOTES ├── README ├── TODO ├── bindings └── squeak │ ├── .filetree │ ├── GeziraBindings-Base.MT.package │ ├── .filetree │ ├── Collection.extension │ │ ├── instance │ │ │ └── asGeziraPath.st │ │ ├── methodProperties.json │ │ └── properties.json │ ├── Color.extension │ │ ├── instance │ │ │ ├── asFloatArray.st │ │ │ └── asGeziraFill.st │ │ ├── methodProperties.json │ │ └── properties.json │ ├── Form.extension │ │ ├── instance │ │ │ └── asGeziraFill.st │ │ ├── methodProperties.json │ │ └── properties.json │ ├── GeziraBindings.class │ │ ├── README.md │ │ ├── class │ │ │ ├── benchmarkFor..st │ │ │ ├── cores.st │ │ │ ├── downsample..st │ │ │ ├── example.st │ │ │ ├── exampleBounds.st │ │ │ ├── exampleFallingLetters.st │ │ │ ├── exampleGradient.st │ │ │ ├── exampleGradientRadial.st │ │ │ ├── exampleJointsCaps.st │ │ │ ├── examplePrim.st │ │ │ ├── exampleSoftShadow.st │ │ │ ├── exampleStroking.st │ │ │ ├── extraKernels.st │ │ │ ├── generateAll.st │ │ │ ├── generateBuilders.st │ │ │ ├── generateMBuilders.st │ │ │ ├── generatePluginDispatch.st │ │ │ ├── generatePluginKernels.st │ │ │ ├── in.classified.compile..st │ │ │ ├── initialize.st │ │ │ ├── kernelDefinitions.st │ │ │ ├── kernelDefinitions2Do..st │ │ │ ├── kernelDefinitionsDo..st │ │ │ ├── kernelDefinitionsFromFile..st │ │ │ ├── optimizeNumberOfThreads.st │ │ │ ├── showPipeline..st │ │ │ ├── systemKernels.st │ │ │ └── threads..st │ │ ├── instance │ │ │ ├── appendKernels..st │ │ │ ├── applyColorSpansSpans..st │ │ │ ├── applyTextureT..st │ │ │ ├── bicubicFilterT..st │ │ │ ├── bilinearFilterT..st │ │ │ ├── calculateBounds.st │ │ │ ├── capture..st │ │ │ ├── clipBeziers..st │ │ │ ├── clipBeziersMinX.minY.maxX.maxY..st │ │ │ ├── colorSpanS1A.s1R.s1G.s1B.s2A.s2R.s2G.s2B.l..st │ │ │ ├── commandsSpecs.st │ │ │ ├── commandsStringC.st │ │ │ ├── commandsStringPostfix.st │ │ │ ├── commandsStringPrefix.st │ │ │ ├── compositeClear.st │ │ │ ├── compositeColorBurn.st │ │ │ ├── compositeColorDodge.st │ │ │ ├── compositeDarken.st │ │ │ ├── compositeDifference.st │ │ │ ├── compositeDst.st │ │ │ ├── compositeDstAtop.st │ │ │ ├── compositeDstIn.st │ │ │ ├── compositeDstOut.st │ │ │ ├── compositeDstOver.st │ │ │ ├── compositeExclusion.st │ │ │ ├── compositeHardLight.st │ │ │ ├── compositeInvert.st │ │ │ ├── compositeLighten.st │ │ │ ├── compositeMultiply.st │ │ │ ├── compositeOver.st │ │ │ ├── compositeOverlay.st │ │ │ ├── compositePlus.st │ │ │ ├── compositeScreen.st │ │ │ ├── compositeSoftLight.st │ │ │ ├── compositeSrc.st │ │ │ ├── compositeSrcAtop.st │ │ │ ├── compositeSrcIn.st │ │ │ ├── compositeSrcOut.st │ │ │ ├── compositeSubtract.st │ │ │ ├── compositeTexturesT1.t2.c..st │ │ │ ├── compositeUniformColorCA.cR.cG.cB.overImageARGB32..st │ │ │ ├── compositeXor.st │ │ │ ├── contrastiveOverA..st │ │ │ ├── feed..st │ │ │ ├── funnel.st │ │ │ ├── gaussianBlur11x1F.t..st │ │ │ ├── gaussianBlur1x11F.t..st │ │ │ ├── gaussianBlur1x21F.t..st │ │ │ ├── gaussianBlur1x5F.t..st │ │ │ ├── gaussianBlur21x1F.t..st │ │ │ ├── gaussianBlur5x1F.t..st │ │ │ ├── inverseOverA..st │ │ │ ├── kernels..st │ │ │ ├── kernels.st │ │ │ ├── linearGradientSX.sY.eX.eY..st │ │ │ ├── memory..st │ │ │ ├── memory.st │ │ │ ├── memoryDefault.st │ │ │ ├── padGradient.st │ │ │ ├── padTextureDX.dY..st │ │ │ ├── pipeline..st │ │ │ ├── pluginMissing.st │ │ │ ├── pluginName.st │ │ │ ├── pour..st │ │ │ ├── pour.from.to.final..st │ │ │ ├── primErrorCode.st │ │ │ ├── primErrorItem.st │ │ │ ├── primErrorMessage.st │ │ │ ├── primExecuteThreads.memory.commands..st │ │ │ ├── primNumberOfCores.st │ │ │ ├── radialGradientCX.cY.r..st │ │ │ ├── rasterize.st │ │ │ ├── readFromImageARGB32..st │ │ │ ├── rectangleSpansMinX.minY.maxX.maxY..st │ │ │ ├── reflectGradient.st │ │ │ ├── reflectTextureDX.dY..st │ │ │ ├── repeatGradient.st │ │ │ ├── repeatTextureDX.dY..st │ │ │ ├── strokeBezierPathW.l.c..st │ │ │ ├── sync.st │ │ │ ├── syncIfNeeded.st │ │ │ ├── threads..st │ │ │ ├── threads.st │ │ │ ├── threadsDefault.st │ │ │ ├── transformBeziers..st │ │ │ ├── transformBeziersMA.mB.mC.mD.mE.mF..st │ │ │ ├── transformPoints..st │ │ │ ├── transformPointsMA.mB.mC.mD.mE.mF..st │ │ │ ├── uniformColorCA.cR.cG.cB..st │ │ │ └── writeToImageARGB32..st │ │ ├── methodProperties.json │ │ └── properties.json │ ├── GeziraCanvas.class │ │ ├── README.md │ │ ├── class │ │ │ ├── example1.st │ │ │ ├── example2.st │ │ │ ├── example3.st │ │ │ ├── example4.st │ │ │ ├── example5.st │ │ │ ├── on..st │ │ │ └── star.st │ │ ├── instance │ │ │ ├── asShadowCanvas.st │ │ │ ├── clip.st │ │ │ ├── clipBy..st │ │ │ ├── color..st │ │ │ ├── deferRendering..st │ │ │ ├── draw..st │ │ │ ├── drawOval..st │ │ │ ├── drawPath..st │ │ │ ├── drawPolygon..st │ │ │ ├── drawRectangle..st │ │ │ ├── drawRectangle.radius..st │ │ │ ├── fill..st │ │ │ ├── fillOval..st │ │ │ ├── fillPolygon..st │ │ │ ├── fillRectangle..st │ │ │ ├── flush.st │ │ │ ├── frameOval.width..st │ │ │ ├── framePolygon.width..st │ │ │ ├── gaussianBlur.size.flatten..st │ │ │ ├── gaussianBlur11x11.flatten..st │ │ │ ├── gaussianBlur21x21.flatten..st │ │ │ ├── gaussianBlur5x5.flatten..st │ │ │ ├── inverseTransformation.st │ │ │ ├── isClipCoveredBy..st │ │ │ ├── isFullyVisible..st │ │ │ ├── isShadowCanvas.st │ │ │ ├── isVisible..st │ │ │ ├── preserveStateDuring..st │ │ │ ├── preserveTransformDuring..st │ │ │ ├── restoreState.st │ │ │ ├── resumeDrawing.st │ │ │ ├── rotateBy..st │ │ │ ├── saveState.st │ │ │ ├── scaleBy..st │ │ │ ├── setTarget..st │ │ │ ├── stroke..st │ │ │ ├── strokePath.width..st │ │ │ ├── suspendDrawing.st │ │ │ ├── transform.st │ │ │ ├── transformBy..st │ │ │ └── translateBy..st │ │ ├── methodProperties.json │ │ └── properties.json │ ├── GeziraFill.class │ │ ├── README.md │ │ ├── class │ │ │ ├── contrastiveOver..st │ │ │ ├── default.st │ │ │ ├── defaultFillReplacing..st │ │ │ ├── gradient.center.radius..st │ │ │ ├── gradient.direction.offset..st │ │ │ ├── gradient.from.to..st │ │ │ ├── image..st │ │ │ ├── image.scale..st │ │ │ ├── inverseOver..st │ │ │ ├── transparent.st │ │ │ └── uniform..st │ │ ├── instance │ │ │ ├── asColor.st │ │ │ ├── asGeziraFill.st │ │ │ ├── fillStyle.st │ │ │ ├── isOpaque.st │ │ │ ├── isTransparent.st │ │ │ ├── isUniform.st │ │ │ ├── mixed.with..st │ │ │ ├── pipelineOn.for..st │ │ │ └── renderOn.target.for..st │ │ ├── methodProperties.json │ │ └── properties.json │ ├── GeziraFillContrastiveOver.class │ │ ├── README.md │ │ ├── instance │ │ │ ├── amount..st │ │ │ └── renderOn.target.for..st │ │ ├── methodProperties.json │ │ └── properties.json │ ├── GeziraFillGradient.class │ │ ├── README.md │ │ ├── instance │ │ │ ├── addStop.at..st │ │ │ ├── asColor.st │ │ │ ├── isOpaque.st │ │ │ ├── isTransparent.st │ │ │ ├── maxGreenStop.st │ │ │ ├── maxRedStop.st │ │ │ ├── solidGreenish.st │ │ │ ├── solidRedish.st │ │ │ ├── stops..st │ │ │ ├── stops.st │ │ │ └── stopsPipelineOn..st │ │ ├── methodProperties.json │ │ └── properties.json │ ├── GeziraFillImage.class │ │ ├── README.md │ │ ├── class │ │ │ └── default.st │ │ ├── instance │ │ │ ├── beOpaque.st │ │ │ ├── form.st │ │ │ ├── isOpaque.st │ │ │ ├── noFiltering.st │ │ │ ├── pipelineOn.for..st │ │ │ ├── setForm..st │ │ │ ├── transform..st │ │ │ └── transformedExtent.st │ │ ├── methodProperties.json │ │ └── properties.json │ ├── GeziraFillInverseOver.class │ │ ├── README.md │ │ ├── instance │ │ │ ├── fraction..st │ │ │ └── pipelineOn.target.for..st │ │ ├── methodProperties.json │ │ └── properties.json │ ├── GeziraFillLinearGradient.class │ │ ├── README.md │ │ ├── class │ │ │ ├── default.st │ │ │ └── defaultFillReplacing..st │ │ ├── instance │ │ │ ├── direction..st │ │ │ ├── direction.offset..st │ │ │ ├── direction.st │ │ │ ├── fillInOldArgs.st │ │ │ ├── from.to..st │ │ │ ├── fromTo.st │ │ │ ├── offset..st │ │ │ ├── offset.st │ │ │ ├── pipelineOn.for..st │ │ │ └── printOn..st │ │ ├── methodProperties.json │ │ └── properties.json │ ├── GeziraFillMix.class │ │ ├── README.md │ │ ├── instance │ │ │ ├── isOpaque.st │ │ │ ├── isTransparent.st │ │ │ ├── pipelineOn.for..st │ │ │ └── setFirst.second.proportion..st │ │ ├── methodProperties.json │ │ └── properties.json │ ├── GeziraFillNone.class │ │ ├── README.md │ │ ├── class │ │ │ └── default.st │ │ ├── instance │ │ │ ├── isTransparent.st │ │ │ └── pipelineOn.for..st │ │ ├── methodProperties.json │ │ └── properties.json │ ├── GeziraFillRadialGradient.class │ │ ├── README.md │ │ ├── class │ │ │ ├── default.st │ │ │ └── defaultFillReplacing..st │ │ ├── instance │ │ │ ├── center..st │ │ │ ├── center.radius..st │ │ │ ├── center.st │ │ │ ├── fromTo.st │ │ │ ├── pipelineOn.for..st │ │ │ ├── radius..st │ │ │ └── radius.st │ │ ├── methodProperties.json │ │ └── properties.json │ ├── GeziraFillUniform.class │ │ ├── README.md │ │ ├── class │ │ │ ├── default.st │ │ │ └── defaultFillReplacing..st │ │ ├── instance │ │ │ ├── alpha.st │ │ │ ├── asColor.st │ │ │ ├── blue.st │ │ │ ├── green.st │ │ │ ├── isOpaque.st │ │ │ ├── isTransparent.st │ │ │ ├── isUniform.st │ │ │ ├── mixed.with..st │ │ │ ├── pipelineOn.for..st │ │ │ ├── printOn..st │ │ │ ├── red.st │ │ │ ├── renderOn.target.for..st │ │ │ └── setAlpha.red.green.blue..st │ │ ├── methodProperties.json │ │ └── properties.json │ ├── GeziraFilledPath.class │ │ ├── README.md │ │ ├── instance │ │ │ ├── drawOn..st │ │ │ ├── fill..st │ │ │ ├── fill.st │ │ │ └── transformedBy..st │ │ ├── methodProperties.json │ │ └── properties.json │ ├── GeziraPath.class │ │ ├── README.md │ │ ├── class │ │ │ ├── arc..st │ │ │ ├── arc.to..st │ │ │ ├── arc.to.center.radius..st │ │ │ ├── arcPoints.to.center.radius..st │ │ │ ├── build..st │ │ │ ├── line.to..st │ │ │ ├── noiseSamplesFrom.to.p..st │ │ │ ├── oval..st │ │ │ ├── path..st │ │ │ ├── polygon..st │ │ │ ├── polyline..st │ │ │ ├── rect.radii..st │ │ │ ├── rect.radii.edges..st │ │ │ ├── rect.radius..st │ │ │ ├── rect.radius.at..st │ │ │ ├── rect.radius.at.edges..st │ │ │ ├── sketchyLineFrom.to.p..st │ │ │ ├── sketchyPointsFrom.to.p..st │ │ │ └── sketchyRect..st │ │ ├── instance │ │ │ ├── ^comma.st │ │ │ ├── asClosedPath.st │ │ │ ├── asFloatArray.st │ │ │ ├── asGeziraPath.st │ │ │ ├── bounds.st │ │ │ ├── boundsWithTransform..st │ │ │ ├── boundsWithTransform.clip.stroke..st │ │ │ ├── boundsWithTransform.stroke..st │ │ │ ├── containsPoint..st │ │ │ ├── containsPoint.withTransform..st │ │ │ ├── containsPoint.withTransform.stroke..st │ │ │ ├── drawOn..st │ │ │ ├── endTangentTransform.st │ │ │ ├── fill.st │ │ │ ├── floats..st │ │ │ ├── floats.st │ │ │ ├── isClosed.st │ │ │ ├── isRectangularSeriesFrom.equalsTo..st │ │ │ ├── minMax.st │ │ │ ├── minMaxWithTransform..st │ │ │ ├── points..st │ │ │ ├── points.st │ │ │ ├── size.st │ │ │ ├── startTangentTransform.st │ │ │ ├── stroke.st │ │ │ ├── transformedBy..st │ │ │ ├── withClosedContours.st │ │ │ └── withFill.stroke.strokeColor..st │ │ ├── methodProperties.json │ │ └── properties.json │ ├── GeziraPathBuilder.class │ │ ├── README.md │ │ ├── instance │ │ │ ├── close.st │ │ │ ├── count.st │ │ │ ├── floats.st │ │ │ ├── left..st │ │ │ ├── line..st │ │ │ ├── pos.dir..st │ │ │ ├── right..st │ │ │ ├── turn..st │ │ │ └── vertex..st │ │ ├── methodProperties.json │ │ └── properties.json │ ├── GeziraShadowCanvas.class │ │ ├── README.md │ │ ├── instance │ │ │ ├── fill..st │ │ │ ├── isShadowCanvas.st │ │ │ └── shadowFill..st │ │ ├── methodProperties.json │ │ └── properties.json │ ├── GeziraStroke.class │ │ ├── README.md │ │ ├── class │ │ │ ├── miter..st │ │ │ ├── miter.st │ │ │ ├── miterLimit.distance..st │ │ │ ├── round..st │ │ │ ├── round.st │ │ │ ├── width..st │ │ │ └── width.joints.caps..st │ │ ├── instance │ │ │ ├── caps..st │ │ │ ├── caps.st │ │ │ ├── joints..st │ │ │ ├── joints.st │ │ │ ├── strokePipelineOn..st │ │ │ ├── width..st │ │ │ └── width.st │ │ ├── methodProperties.json │ │ └── properties.json │ ├── GeziraStrokeMiter.class │ │ ├── README.md │ │ ├── instance │ │ │ ├── limit..st │ │ │ └── limit.st │ │ ├── methodProperties.json │ │ └── properties.json │ ├── GeziraStrokeRound.class │ │ ├── README.md │ │ ├── instance │ │ │ └── limit.st │ │ ├── methodProperties.json │ │ └── properties.json │ ├── GeziraStrokedPath.class │ │ ├── README.md │ │ ├── instance │ │ │ ├── boundsWithTransform.stroke..st │ │ │ ├── containsPoint.withTransform.stroke..st │ │ │ ├── drawOn..st │ │ │ ├── stroke..st │ │ │ ├── stroke.st │ │ │ └── transformedBy..st │ │ ├── methodProperties.json │ │ └── properties.json │ ├── MatrixTransform2x3.extension │ │ ├── instance │ │ │ ├── isAxisAligning.st │ │ │ ├── localBounds.toGlobalNoRound..st │ │ │ ├── localBoundsToGlobalNoRound..st │ │ │ └── transformPointNoRound..st │ │ ├── methodProperties.json │ │ └── properties.json │ ├── Rectangle.extension │ │ ├── instance │ │ │ ├── asGeziraPath.st │ │ │ └── clippedBy..st │ │ ├── methodProperties.json │ │ └── properties.json │ ├── TTGlyph.extension │ │ ├── instance │ │ │ └── asGeziraPath.st │ │ ├── methodProperties.json │ │ └── properties.json │ ├── monticello.meta │ │ ├── categories.st │ │ ├── initializers.st │ │ ├── package │ │ └── version │ └── properties.json │ ├── GeziraBindingsMT-Plugin.package │ ├── .filetree │ ├── GeziraBindingsMTPlugin.class │ │ ├── README.md │ │ ├── class │ │ │ ├── declareCVarsIn..st │ │ │ ├── initialize.st │ │ │ ├── moduleName.st │ │ │ ├── moduleNameAndVersion.st │ │ │ └── version.st │ │ ├── instance │ │ │ ├── checkNileError.st │ │ │ ├── dispatchKernel.size.arguments.size..st │ │ │ ├── executeCommand..st │ │ │ ├── executeKernel.size..st │ │ │ ├── executePour.size..st │ │ │ ├── executeSync.size..st │ │ │ ├── fail..st │ │ │ ├── imageFromForm..st │ │ │ ├── initialiseModule.st │ │ │ ├── kernelApplyColorSpans.size..st │ │ │ ├── kernelApplyTexture.size..st │ │ │ ├── kernelBicubicFilter.size..st │ │ │ ├── kernelBilinearFilter.size..st │ │ │ ├── kernelCalculateBounds.size..st │ │ │ ├── kernelCapture.size..st │ │ │ ├── kernelClipBeziers.size..st │ │ │ ├── kernelColorSpan.size..st │ │ │ ├── kernelCompositeClear.size..st │ │ │ ├── kernelCompositeColorBurn.size..st │ │ │ ├── kernelCompositeColorDodge.size..st │ │ │ ├── kernelCompositeDarken.size..st │ │ │ ├── kernelCompositeDifference.size..st │ │ │ ├── kernelCompositeDst.size..st │ │ │ ├── kernelCompositeDstAtop.size..st │ │ │ ├── kernelCompositeDstIn.size..st │ │ │ ├── kernelCompositeDstOut.size..st │ │ │ ├── kernelCompositeDstOver.size..st │ │ │ ├── kernelCompositeExclusion.size..st │ │ │ ├── kernelCompositeHardLight.size..st │ │ │ ├── kernelCompositeInvert.size..st │ │ │ ├── kernelCompositeLighten.size..st │ │ │ ├── kernelCompositeMultiply.size..st │ │ │ ├── kernelCompositeOver.size..st │ │ │ ├── kernelCompositeOverlay.size..st │ │ │ ├── kernelCompositePlus.size..st │ │ │ ├── kernelCompositeScreen.size..st │ │ │ ├── kernelCompositeSoftLight.size..st │ │ │ ├── kernelCompositeSrc.size..st │ │ │ ├── kernelCompositeSrcAtop.size..st │ │ │ ├── kernelCompositeSrcIn.size..st │ │ │ ├── kernelCompositeSrcOut.size..st │ │ │ ├── kernelCompositeSubtract.size..st │ │ │ ├── kernelCompositeTextures.size..st │ │ │ ├── kernelCompositeUniformColorOverImageARGB32.size..st │ │ │ ├── kernelCompositeXor.size..st │ │ │ ├── kernelContrastiveOver.size..st │ │ │ ├── kernelFunnel.size..st │ │ │ ├── kernelGaussianBlur11x1.size..st │ │ │ ├── kernelGaussianBlur1x11.size..st │ │ │ ├── kernelGaussianBlur1x21.size..st │ │ │ ├── kernelGaussianBlur1x5.size..st │ │ │ ├── kernelGaussianBlur21x1.size..st │ │ │ ├── kernelGaussianBlur5x1.size..st │ │ │ ├── kernelInverseOver.size..st │ │ │ ├── kernelLinearGradient.size..st │ │ │ ├── kernelPadGradient.size..st │ │ │ ├── kernelPadTexture.size..st │ │ │ ├── kernelPipeline.size..st │ │ │ ├── kernelRadialGradient.size..st │ │ │ ├── kernelRasterize.size..st │ │ │ ├── kernelReadFromImageARGB32.size..st │ │ │ ├── kernelRectangleSpans.size..st │ │ │ ├── kernelReflectGradient.size..st │ │ │ ├── kernelReflectTexture.size..st │ │ │ ├── kernelRepeatGradient.size..st │ │ │ ├── kernelRepeatTexture.size..st │ │ │ ├── kernelStrokeBezierPath.size..st │ │ │ ├── kernelTransformBeziers.size..st │ │ │ ├── kernelTransformPoints.size..st │ │ │ ├── kernelUniformColor.size..st │ │ │ ├── kernelWriteToImageARGB32.size..st │ │ │ ├── loadArgumentMatrix..st │ │ │ ├── loadArgumentPoint..st │ │ │ ├── makePoint.and..st │ │ │ ├── matrix2x3TransformPoint..st │ │ │ ├── popKernel.st │ │ │ ├── popKernels..st │ │ │ ├── primitiveErrorCode.st │ │ │ ├── primitiveErrorItem.st │ │ │ ├── primitiveErrorMessage.st │ │ │ ├── primitiveExecuteThreads.memory.commands..st │ │ │ ├── primitiveNumberOfCores.st │ │ │ ├── primitiveTransformPoint..st │ │ │ ├── primitiveTransformRect.into..st │ │ │ ├── pushKernel..st │ │ │ ├── reset.st │ │ │ ├── shutdownModule.st │ │ │ ├── storeRectangle.x0.y0.x1.y1..st │ │ │ ├── string.equals.len..st │ │ │ └── topKernel.st │ │ ├── methodProperties.json │ │ └── properties.json │ ├── monticello.meta │ │ ├── categories.st │ │ ├── initializers.st │ │ ├── package │ │ └── version │ └── properties.json │ ├── GeziraBindingsMT.c │ └── README.md ├── c ├── Makefile.gcc ├── Makefile.msvc ├── TODO ├── demos │ ├── Makefile.gcc │ ├── TODO │ ├── blur-demo.c │ ├── bounds-demo.c │ ├── composite-demo.c │ ├── contrastive-demo.c │ ├── gradient-demo.c │ ├── image-demo.c │ ├── inverse-over-demo.c │ ├── shadow-demo.c │ ├── snow-demo.c │ ├── stroke-demo.c │ ├── text-demo.c │ └── utils │ │ ├── all.h │ │ ├── fps.h │ │ ├── matrix.h │ │ ├── random.h │ │ ├── snowflake.h │ │ ├── star.h │ │ └── window.h ├── gezira-image.c ├── gezira-image.h ├── gezira.c └── gezira.h ├── hs └── gezira.hs ├── js ├── TODO ├── demos │ ├── basic.html │ ├── gradient-composite.html │ ├── linear-gradient.html │ ├── nile.js │ ├── radial-gradient.html │ ├── shapes.js │ ├── stroke-canvas-fit.html │ ├── stroke-canvas.html │ ├── stroke.html │ └── sunset.jpg └── gezira.js └── nl ├── bezier.nl ├── compositor.nl ├── filter.nl ├── gradient.nl ├── rasterize.nl ├── stroke.nl ├── texture.nl └── types.nl /.gitignore: -------------------------------------------------------------------------------- 1 | *.[oa] 2 | *.lib 3 | *.obj 4 | *.swp 5 | *.exe 6 | .DS_Store 7 | -------------------------------------------------------------------------------- /NOTES: -------------------------------------------------------------------------------- 1 | Compositor references 2 | - http://www.w3.org/TR/2003/WD-SVG12-20030715/#compositing 3 | - http://www.w3.org/TR/2004/WD-SVG12-20041027/rendering.html#compositing 4 | - http://www.w3.org/TR/SVG/filters.html#feBlend 5 | - http://livedocs.adobe.com/flash/9.0/UsingFlash/help.html?content=WSd60f23110762d6b883b18f10cb1fe1af6-7d5b.html 6 | - http://www.kaourantin.net/2005/09/some-word-on-blend-modes-in-flash.html 7 | - http://www.pegtop.net/delphi/articles/blendmodes/ 8 | -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | This isn't meant for others to use (yet). But for the persistent, 2 | here are some hints: 3 | 4 | nl/ 5 | 6 | Source code written in Nile 7 | 8 | c/ 9 | 10 | Compiler-generated C code. Depends on a C-based Nile runtime. 11 | If you're lucky, ``make -f Makefile.gcc" might get you a libgezira.a. 12 | 13 | c/demos/ 14 | 15 | Some mostly-broken demos. Depends on a libgezira.a and a C-based Nile 16 | runtime. If you're lucky, ``make -f Makefile.gcc snow-demo" might get 17 | you some falling snow. 18 | 19 | bindings/squeak/ 20 | 21 | Squeak bindings to the compiled code in c/ . 22 | 23 | js/ 24 | 25 | Compiler-generated Javascript code (out-of-date) 26 | 27 | js/demos/ 28 | 29 | Javascript demos 30 | 31 | hs/ 32 | 33 | Early experiment in generating Haskell code 34 | -------------------------------------------------------------------------------- /bindings/squeak/.filetree: -------------------------------------------------------------------------------- 1 | { "packageExtension" : ".package" } 2 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/.filetree: -------------------------------------------------------------------------------- 1 | { 2 | "noMethodMetaData" : true, 3 | "separateMethodMetaAndSource" : false, 4 | "useCypressPropertiesFile" : true } 5 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/Collection.extension/instance/asGeziraPath.st: -------------------------------------------------------------------------------- 1 | *gezirabindings-base 2 | asGeziraPath 3 | ^self anyOne isNumber 4 | ifTrue: [GeziraPath new floats: self] 5 | ifFalse: [GeziraPath new points: self] 6 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/Collection.extension/methodProperties.json: -------------------------------------------------------------------------------- 1 | { 2 | "class" : { 3 | }, 4 | "instance" : { 5 | "asGeziraPath" : "bf 8/28/2010 12:53" } } 6 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/Collection.extension/properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Collection" } 3 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/Color.extension/instance/asFloatArray.st: -------------------------------------------------------------------------------- 1 | *gezirabindings-base 2 | asFloatArray 3 | ^FloatArray 4 | with: (self privateRed / ComponentMax) 5 | with: (self privateGreen asFloat / ComponentMax) 6 | with: (self privateBlue asFloat / ComponentMax) 7 | with: self alpha 8 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/Color.extension/instance/asGeziraFill.st: -------------------------------------------------------------------------------- 1 | *gezirabindings-base 2 | asGeziraFill 3 | ^ GeziraFill uniform: self. -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/Color.extension/methodProperties.json: -------------------------------------------------------------------------------- 1 | { 2 | "class" : { 3 | }, 4 | "instance" : { 5 | "asFloatArray" : "bf 2/3/2010 17:04", 6 | "asGeziraFill" : "JMG 1/20/2013 16:41" } } 7 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/Color.extension/properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Color" } 3 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/Form.extension/instance/asGeziraFill.st: -------------------------------------------------------------------------------- 1 | *gezirabindings-base 2 | asGeziraFill 3 | ^GeziraFill image: self -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/Form.extension/methodProperties.json: -------------------------------------------------------------------------------- 1 | { 2 | "class" : { 3 | }, 4 | "instance" : { 5 | "asGeziraFill" : "bf 9/19/2011 12:15" } } 6 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/Form.extension/properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Form" } 3 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/damelang/gezira/9f3e6846f4a1732c344a3b99e5d670deac618b17/bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/README.md -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/class/cores.st: -------------------------------------------------------------------------------- 1 | preferences 2 | cores 3 | ^self new primNumberOfCores -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/class/downsample..st: -------------------------------------------------------------------------------- 1 | utilities 2 | downsample: aForm 3 | "return a form half the size of aForm" 4 | | target vertices g t | 5 | aForm extent <= (1@1) ifTrue: [^aForm]. 6 | target := Form extent: aForm extent // 2 depth: 32. 7 | t := MatrixTransform2x3 withScale: aForm extent / target extent. 8 | vertices := (0@0 extent: target extent) asGeziraPath. 9 | (g := self new) 10 | kernels: ( 11 | g pipeline: { 12 | g funnel. 13 | g rasterize. 14 | g applyTextureT: ( 15 | g pipeline: { 16 | g transformPoints: t. 17 | g bilinearFilterT: ( 18 | g readFromImageARGB32: aForm)}). 19 | g writeToImageARGB32: target}); 20 | pour: vertices from: 1 to: vertices size final: true; 21 | sync. 22 | ^target -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/class/example.st: -------------------------------------------------------------------------------- 1 | example 2 | example 3 | "GeziraBindings example" 4 | | target vertices g | 5 | target := Form extent: 400@300 depth: 32. 6 | vertices := GeziraCanvas star. 7 | (g := GeziraBindings new) 8 | kernels: (g pipeline: { 9 | g funnel. 10 | g transformBeziers: (MatrixTransform2x3 withOffset: 150@150). 11 | g clipBeziers: target boundingBox. 12 | g rasterize. 13 | g compositeUniformColorCA: 0.5 cR: 1 cG: 0 cB: 0 overImageARGB32: target }); 14 | pour: vertices from: 1 to: vertices size final: true; 15 | sync. 16 | Display getCanvas translucentImage: target at: 0@0 17 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/class/exampleStroking.st: -------------------------------------------------------------------------------- 1 | example 2 | exampleStroking 3 | "GeziraBindings exampleStroking" 4 | | target vertices g | 5 | target := Form extent: 400@300 depth: 32. 6 | vertices := GeziraCanvas star. 7 | (g := GeziraBindings new) 8 | kernels: ( 9 | g pipeline: { 10 | g funnel. 11 | g transformBeziers: (MatrixTransform2x3 withOffset: 150@150). 12 | g strokeBezierPathW: 10 l: 4 c: 0. 13 | g clipBeziers: target boundingBox. 14 | g rasterize. 15 | g compositeUniformColorCA: 1 cR: 0 cG: 0 cB: 1 overImageARGB32: target}); 16 | pour: vertices asFloatArray from: 1 to: vertices size final: true; 17 | sync. 18 | Display getCanvas translucentImage: target at: 0@0 19 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/class/extraKernels.st: -------------------------------------------------------------------------------- 1 | definitions 2 | extraKernels 3 | "hand-written (not generated) kernels" 4 | ^#('Funnel' 5 | 'Pipeline' 6 | 'Capture' 7 | 'ReadFromImageARGB32' 8 | 'WriteToImageARGB32' 9 | 'CompositeUniformColorOverImageARGB32') -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/class/generateAll.st: -------------------------------------------------------------------------------- 1 | generating 2 | generateAll 3 | "self generateAll" 4 | self generateBuilders. 5 | " self generateMBuilders." 6 | self generatePluginDispatch. 7 | self generatePluginKernels. 8 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/class/in.classified.compile..st: -------------------------------------------------------------------------------- 1 | generating 2 | in: aClassName classified: aCategory compile: aString 3 | "Compile aString in aCategory of aClass, but only if it is different from the current source code. 4 | Useful to avoid cluttering the changes file when auto-generating methods." 5 | | targetClass selector | 6 | targetClass := Smalltalk classNamed: aClassName. 7 | targetClass ifNil: [^self]. 8 | selector := targetClass parserClass new parseSelector: aString. 9 | ((targetClass includesSelector: selector) 10 | and: [(targetClass sourceCodeAt: selector) = aString]) 11 | ifFalse: [targetClass compile: aString classified: aCategory] -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/class/initialize.st: -------------------------------------------------------------------------------- 1 | preferences 2 | initialize 3 | self threads: nil. 4 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/class/kernelDefinitions2Do..st: -------------------------------------------------------------------------------- 1 | definitions 2 | kernelDefinitions2Do: aBlock 3 | "self kernelDefinitionsDo: [:kernel :args | Transcript cr; show: kernel, ': ', args asString; cr]" 4 | | s kernel arguments | 5 | s := self kernelDefinitions readStream. 6 | [s atEnd] whileFalse: [ 7 | kernel := (s upTo: $() withBlanksTrimmed. 8 | arguments := ((s upTo: $)) findTokens: ',') asArray 9 | collect: [:arg | 10 | {(arg copyUpToLast: Character space) withBlanksTrimmed. 11 | (arg copyAfterLast: Character space)}]. 12 | aBlock value: kernel value: arguments]. -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/class/kernelDefinitionsDo..st: -------------------------------------------------------------------------------- 1 | definitions 2 | kernelDefinitionsDo: aBlock 3 | "self kernelDefinitionsDo: [:kernel :args | Transcript cr; show: kernel, ': ', args asString; cr]" 4 | | s kernel arguments | 5 | s := self kernelDefinitions readStream. 6 | [s atEnd] whileFalse: [ 7 | kernel := (s upTo: $() withBlanksTrimmed. 8 | arguments := ((s upTo: $)) findTokens: ',') asArray 9 | collect: [:arg | 10 | {(arg copyUpToLast: Character space) withBlanksTrimmed. 11 | ((arg copyAfterLast: Character space) copyReplaceAll: '_' with: ' ') 12 | withFirstCharacterDownshifted toCamelCase}]. 13 | aBlock value: kernel value: arguments]. -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/class/optimizeNumberOfThreads.st: -------------------------------------------------------------------------------- 1 | preferences 2 | optimizeNumberOfThreads 3 | "GeziraBindings optimizeNumberOfThreads" 4 | | benchmarks threshold good | 5 | benchmarks := (1 to: self cores) collect: [:threads | 6 | self threads: threads. 7 | (self benchmarkFor: 500) -> threads]. 8 | threshold := benchmarks max key * 0.9. 9 | good := ((benchmarks select: [:ea | ea key > threshold]) detectMin: [:ea | ea value]) value. 10 | self threads: good. 11 | ^good -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/class/showPipeline..st: -------------------------------------------------------------------------------- 1 | debugging 2 | showPipeline: aBoolean 3 | "log rendering pipeline to transcript" 4 | ShowPipeline := aBoolean -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/class/threads..st: -------------------------------------------------------------------------------- 1 | preferences 2 | threads: anInteger 3 | "default number of threads to use" 4 | Threads := anInteger. 5 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/appendKernels..st: -------------------------------------------------------------------------------- 1 | accessing 2 | appendKernels: anArray 3 | commands 4 | ifNil: [commands := anArray] 5 | ifNotNil: [commands := commands , anArray]. 6 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/applyColorSpansSpans..st: -------------------------------------------------------------------------------- 1 | building-generated 2 | applyColorSpansSpans: spansKernel 3 | "Automatically generated (see generateBuilders)" 4 | ^ spansKernel, {{#Kernel. #ApplyColorSpans}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/applyTextureT..st: -------------------------------------------------------------------------------- 1 | building-generated 2 | applyTextureT: tKernel 3 | "Automatically generated (see generateBuilders)" 4 | ^ tKernel, {{#Kernel. #ApplyTexture}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/bicubicFilterT..st: -------------------------------------------------------------------------------- 1 | building-generated 2 | bicubicFilterT: tKernel 3 | "Automatically generated (see generateBuilders)" 4 | ^ tKernel, {{#Kernel. #BicubicFilter}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/bilinearFilterT..st: -------------------------------------------------------------------------------- 1 | building-generated 2 | bilinearFilterT: tKernel 3 | "Automatically generated (see generateBuilders)" 4 | ^ tKernel, {{#Kernel. #BilinearFilter}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/calculateBounds.st: -------------------------------------------------------------------------------- 1 | building-generated 2 | calculateBounds 3 | "Automatically generated (see generateBuilders)" 4 | ^ {{#Kernel. #CalculateBounds}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/capture..st: -------------------------------------------------------------------------------- 1 | building 2 | capture: aFloatArray 3 | ^ {{#Kernel. #Capture. aFloatArray}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/clipBeziers..st: -------------------------------------------------------------------------------- 1 | building 2 | clipBeziers: aRectangle 3 | ^self clipBeziersMinX: aRectangle left 4 | minY: aRectangle top 5 | maxX: aRectangle right 6 | maxY: aRectangle bottom 7 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/clipBeziersMinX.minY.maxX.maxY..st: -------------------------------------------------------------------------------- 1 | building-generated 2 | clipBeziersMinX: minX minY: minY maxX: maxX maxY: maxY 3 | "Automatically generated (see generateBuilders)" 4 | ^ {{#Kernel. #ClipBeziers. minX asFloat. minY asFloat. maxX asFloat. maxY asFloat}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/colorSpanS1A.s1R.s1G.s1B.s2A.s2R.s2G.s2B.l..st: -------------------------------------------------------------------------------- 1 | building-generated 2 | colorSpanS1A: s1A s1R: s1R s1G: s1G s1B: s1B s2A: s2A s2R: s2R s2G: s2G s2B: s2B l: l 3 | "Automatically generated (see generateBuilders)" 4 | ^ {{#Kernel. #ColorSpan. s1A asFloat. s1R asFloat. s1G asFloat. s1B asFloat. s2A asFloat. s2R asFloat. s2G asFloat. s2B asFloat. l asFloat}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/commandsSpecs.st: -------------------------------------------------------------------------------- 1 | printing 2 | commandsSpecs 3 | | specs | 4 | specs := { 5 | #Funnel -> #(). 6 | #ReadFromImageARGB32->#((Form 'f')). 7 | #WriteToImageARGB32->#((Form 'f')). 8 | #CompositeUniformColorOverImageARGB32 -> #((Real 'a') (Real 'r') (Real 'g') (Real 'b') (Form 'f')). 9 | #Capture->#((Array 'a')). 10 | } as: Dictionary. 11 | self class kernelDefinitionsDo: [:k :d | specs at: k put: d]. 12 | ^specs -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/compositeClear.st: -------------------------------------------------------------------------------- 1 | building-generated 2 | compositeClear 3 | "Automatically generated (see generateBuilders)" 4 | ^ {{#Kernel. #CompositeClear}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/compositeColorBurn.st: -------------------------------------------------------------------------------- 1 | building-generated 2 | compositeColorBurn 3 | "Automatically generated (see generateBuilders)" 4 | ^ {{#Kernel. #CompositeColorBurn}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/compositeColorDodge.st: -------------------------------------------------------------------------------- 1 | building-generated 2 | compositeColorDodge 3 | "Automatically generated (see generateBuilders)" 4 | ^ {{#Kernel. #CompositeColorDodge}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/compositeDarken.st: -------------------------------------------------------------------------------- 1 | building-generated 2 | compositeDarken 3 | "Automatically generated (see generateBuilders)" 4 | ^ {{#Kernel. #CompositeDarken}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/compositeDifference.st: -------------------------------------------------------------------------------- 1 | building-generated 2 | compositeDifference 3 | "Automatically generated (see generateBuilders)" 4 | ^ {{#Kernel. #CompositeDifference}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/compositeDst.st: -------------------------------------------------------------------------------- 1 | building-generated 2 | compositeDst 3 | "Automatically generated (see generateBuilders)" 4 | ^ {{#Kernel. #CompositeDst}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/compositeDstAtop.st: -------------------------------------------------------------------------------- 1 | building-generated 2 | compositeDstAtop 3 | "Automatically generated (see generateBuilders)" 4 | ^ {{#Kernel. #CompositeDstAtop}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/compositeDstIn.st: -------------------------------------------------------------------------------- 1 | building-generated 2 | compositeDstIn 3 | "Automatically generated (see generateBuilders)" 4 | ^ {{#Kernel. #CompositeDstIn}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/compositeDstOut.st: -------------------------------------------------------------------------------- 1 | building-generated 2 | compositeDstOut 3 | "Automatically generated (see generateBuilders)" 4 | ^ {{#Kernel. #CompositeDstOut}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/compositeDstOver.st: -------------------------------------------------------------------------------- 1 | building-generated 2 | compositeDstOver 3 | "Automatically generated (see generateBuilders)" 4 | ^ {{#Kernel. #CompositeDstOver}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/compositeExclusion.st: -------------------------------------------------------------------------------- 1 | building-generated 2 | compositeExclusion 3 | "Automatically generated (see generateBuilders)" 4 | ^ {{#Kernel. #CompositeExclusion}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/compositeHardLight.st: -------------------------------------------------------------------------------- 1 | building-generated 2 | compositeHardLight 3 | "Automatically generated (see generateBuilders)" 4 | ^ {{#Kernel. #CompositeHardLight}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/compositeInvert.st: -------------------------------------------------------------------------------- 1 | building-generated 2 | compositeInvert 3 | "Automatically generated (see generateBuilders)" 4 | ^ {{#Kernel. #CompositeInvert}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/compositeLighten.st: -------------------------------------------------------------------------------- 1 | building-generated 2 | compositeLighten 3 | "Automatically generated (see generateBuilders)" 4 | ^ {{#Kernel. #CompositeLighten}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/compositeMultiply.st: -------------------------------------------------------------------------------- 1 | building-generated 2 | compositeMultiply 3 | "Automatically generated (see generateBuilders)" 4 | ^ {{#Kernel. #CompositeMultiply}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/compositeOver.st: -------------------------------------------------------------------------------- 1 | building-generated 2 | compositeOver 3 | "Automatically generated (see generateBuilders)" 4 | ^ {{#Kernel. #CompositeOver}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/compositeOverlay.st: -------------------------------------------------------------------------------- 1 | building-generated 2 | compositeOverlay 3 | "Automatically generated (see generateBuilders)" 4 | ^ {{#Kernel. #CompositeOverlay}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/compositePlus.st: -------------------------------------------------------------------------------- 1 | building-generated 2 | compositePlus 3 | "Automatically generated (see generateBuilders)" 4 | ^ {{#Kernel. #CompositePlus}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/compositeScreen.st: -------------------------------------------------------------------------------- 1 | building-generated 2 | compositeScreen 3 | "Automatically generated (see generateBuilders)" 4 | ^ {{#Kernel. #CompositeScreen}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/compositeSoftLight.st: -------------------------------------------------------------------------------- 1 | building-generated 2 | compositeSoftLight 3 | "Automatically generated (see generateBuilders)" 4 | ^ {{#Kernel. #CompositeSoftLight}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/compositeSrc.st: -------------------------------------------------------------------------------- 1 | building-generated 2 | compositeSrc 3 | "Automatically generated (see generateBuilders)" 4 | ^ {{#Kernel. #CompositeSrc}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/compositeSrcAtop.st: -------------------------------------------------------------------------------- 1 | building-generated 2 | compositeSrcAtop 3 | "Automatically generated (see generateBuilders)" 4 | ^ {{#Kernel. #CompositeSrcAtop}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/compositeSrcIn.st: -------------------------------------------------------------------------------- 1 | building-generated 2 | compositeSrcIn 3 | "Automatically generated (see generateBuilders)" 4 | ^ {{#Kernel. #CompositeSrcIn}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/compositeSrcOut.st: -------------------------------------------------------------------------------- 1 | building-generated 2 | compositeSrcOut 3 | "Automatically generated (see generateBuilders)" 4 | ^ {{#Kernel. #CompositeSrcOut}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/compositeSubtract.st: -------------------------------------------------------------------------------- 1 | building-generated 2 | compositeSubtract 3 | "Automatically generated (see generateBuilders)" 4 | ^ {{#Kernel. #CompositeSubtract}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/compositeTexturesT1.t2.c..st: -------------------------------------------------------------------------------- 1 | building-generated 2 | compositeTexturesT1: t1Kernel t2: t2Kernel c: cKernel 3 | "Automatically generated (see generateBuilders)" 4 | ^ t1Kernel, t2Kernel, cKernel, {{#Kernel. #CompositeTextures}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/compositeUniformColorCA.cR.cG.cB.overImageARGB32..st: -------------------------------------------------------------------------------- 1 | building 2 | compositeUniformColorCA: cA cR: cR cG: cG cB: cB overImageARGB32: aForm 3 | "This is an optimization for 4 | {#Kernel. #UniformColor. cA asFloat. cR asFloat. cG asFloat. cB asFloat}. 5 | {#Kernel. #ReadFromImageARGB32. aForm}. 6 | {#Kernel. #CompositeOver}. 7 | {#Kernel. #CompositeTextures}. 8 | {#Kernel. #ApplyTexture}. 9 | {#Kernel. #WriteToImageARGB32. aForm}. 10 | " 11 | aForm unhibernate. 12 | ^ {{#Kernel. #CompositeUniformColorOverImageARGB32. cA asFloat. cR asFloat. cG asFloat. cB asFloat. aForm}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/compositeXor.st: -------------------------------------------------------------------------------- 1 | building-generated 2 | compositeXor 3 | "Automatically generated (see generateBuilders)" 4 | ^ {{#Kernel. #CompositeXor}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/contrastiveOverA..st: -------------------------------------------------------------------------------- 1 | building-generated 2 | contrastiveOverA: a 3 | "Automatically generated (see generateBuilders)" 4 | ^ {{#Kernel. #ContrastiveOver. a asFloat}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/feed..st: -------------------------------------------------------------------------------- 1 | building 2 | feed: vertices 3 | ^self feed: vertices from: 1 to: vertices size by: 6 4 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/funnel.st: -------------------------------------------------------------------------------- 1 | building 2 | funnel 3 | ^ {{#Kernel. #Funnel}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/gaussianBlur11x1F.t..st: -------------------------------------------------------------------------------- 1 | building-generated 2 | gaussianBlur11x1F: f t: tKernel 3 | "Automatically generated (see generateBuilders)" 4 | ^ tKernel, {{#Kernel. #GaussianBlur11x1. f asFloat}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/gaussianBlur1x11F.t..st: -------------------------------------------------------------------------------- 1 | building-generated 2 | gaussianBlur1x11F: f t: tKernel 3 | "Automatically generated (see generateBuilders)" 4 | ^ tKernel, {{#Kernel. #GaussianBlur1x11. f asFloat}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/gaussianBlur1x21F.t..st: -------------------------------------------------------------------------------- 1 | building-generated 2 | gaussianBlur1x21F: f t: tKernel 3 | "Automatically generated (see generateBuilders)" 4 | ^ tKernel, {{#Kernel. #GaussianBlur1x21. f asFloat}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/gaussianBlur1x5F.t..st: -------------------------------------------------------------------------------- 1 | building-generated 2 | gaussianBlur1x5F: f t: tKernel 3 | "Automatically generated (see generateBuilders)" 4 | ^ tKernel, {{#Kernel. #GaussianBlur1x5. f asFloat}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/gaussianBlur21x1F.t..st: -------------------------------------------------------------------------------- 1 | building-generated 2 | gaussianBlur21x1F: f t: tKernel 3 | "Automatically generated (see generateBuilders)" 4 | ^ tKernel, {{#Kernel. #GaussianBlur21x1. f asFloat}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/gaussianBlur5x1F.t..st: -------------------------------------------------------------------------------- 1 | building-generated 2 | gaussianBlur5x1F: f t: tKernel 3 | "Automatically generated (see generateBuilders)" 4 | ^ tKernel, {{#Kernel. #GaussianBlur5x1. f asFloat}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/inverseOverA..st: -------------------------------------------------------------------------------- 1 | building-generated 2 | inverseOverA: a 3 | "Automatically generated (see generateBuilders)" 4 | ^ {{#Kernel. #InverseOver. a asFloat}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/kernels..st: -------------------------------------------------------------------------------- 1 | accessing 2 | kernels: anArray 3 | commands := anArray. 4 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/kernels.st: -------------------------------------------------------------------------------- 1 | building 2 | kernels 3 | ^commands -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/linearGradientSX.sY.eX.eY..st: -------------------------------------------------------------------------------- 1 | building-generated 2 | linearGradientSX: sX sY: sY eX: eX eY: eY 3 | "Automatically generated (see generateBuilders)" 4 | ^ {{#Kernel. #LinearGradient. sX asFloat. sY asFloat. eX asFloat. eY asFloat}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/memory..st: -------------------------------------------------------------------------------- 1 | accessing 2 | memory: anInteger 3 | memory := anInteger -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/memory.st: -------------------------------------------------------------------------------- 1 | accessing 2 | memory 3 | ^memory ifNil: [memory := self memoryDefault] -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/memoryDefault.st: -------------------------------------------------------------------------------- 1 | accessing 2 | memoryDefault 3 | ^ 10000000 -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/padGradient.st: -------------------------------------------------------------------------------- 1 | building-generated 2 | padGradient 3 | "Automatically generated (see generateBuilders)" 4 | ^ {{#Kernel. #PadGradient}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/padTextureDX.dY..st: -------------------------------------------------------------------------------- 1 | building-generated 2 | padTextureDX: dX dY: dY 3 | "Automatically generated (see generateBuilders)" 4 | ^ {{#Kernel. #PadTexture. dX asFloat. dY asFloat}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/pipeline..st: -------------------------------------------------------------------------------- 1 | building 2 | pipeline: anArray 3 | | stream | 4 | stream := (Array new: 100) writeStream. 5 | anArray do: [:cmds | stream nextPutAll: cmds]. 6 | stream nextPut: {#Kernel. #Pipeline. anArray size}. 7 | ^stream contents -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/pluginMissing.st: -------------------------------------------------------------------------------- 1 | primitives 2 | pluginMissing 3 | | moduleName | 4 | moduleName := thisContext sender method literals first first. 5 | (Smalltalk listLoadedModules noneSatisfy: [:each | each beginsWith: moduleName]) 6 | ifTrue: [ 7 | Smalltalk unloadModule: moduleName. 8 | self error: moduleName, ' plugin not found'. 9 | ^true]. 10 | ^false -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/pluginName.st: -------------------------------------------------------------------------------- 1 | primitives 2 | pluginName 3 | self class methodsDo: [:method | 4 | method primitive = 117 5 | ifTrue: [^method literals first first]]. 6 | ^self error: 'no primitives defined' -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/pour..st: -------------------------------------------------------------------------------- 1 | building 2 | pour: vertices 3 | ^self pour: vertices from: 1 to: vertices size final: true -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/pour.from.to.final..st: -------------------------------------------------------------------------------- 1 | building 2 | pour: vertices from: start to: end final: isLast 3 | commands := commands, {{#Pour. vertices asFloatArray. start. end. isLast}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/primErrorCode.st: -------------------------------------------------------------------------------- 1 | primitives 2 | primErrorCode 3 | "Answer the code returned from nile_error" 4 | 5 | ^self primitiveFailed -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/primErrorItem.st: -------------------------------------------------------------------------------- 1 | primitives 2 | primErrorItem 3 | "Answer the index of the command causing a primitive failure in the last execute call" 4 | 5 | ^self primitiveFailed -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/primErrorMessage.st: -------------------------------------------------------------------------------- 1 | primitives 2 | primErrorMessage 3 | "Answer a string description for the cause of the primitive failure in the last execute call" 4 | 5 | ^self primitiveFailed -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/primExecuteThreads.memory.commands..st: -------------------------------------------------------------------------------- 1 | primitives 2 | primExecuteThreads: nThreads memory: nBytes commands: pipelineSpec 3 | "This is the only primitive actually invoking Gezira - it executes an Array with commands" 4 | 5 | ^self pluginMissing ifFalse: [ 6 | | item code message command | 7 | item := self primErrorItem. 8 | code := self primErrorCode. 9 | message := self primErrorMessage. 10 | command := (pipelineSpec at: item ifAbsent: [#(Unknown)]) first. 11 | command = #Kernel 12 | ifTrue: [command := (pipelineSpec at: item) second]. 13 | self error: message, ' (', command, ': ', code asString, ')'] -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/primNumberOfCores.st: -------------------------------------------------------------------------------- 1 | primitives 2 | primNumberOfCores 3 | 4 | ^self pluginMissing ifFalse: [self primitiveFailed] -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/radialGradientCX.cY.r..st: -------------------------------------------------------------------------------- 1 | building-generated 2 | radialGradientCX: cX cY: cY r: r 3 | "Automatically generated (see generateBuilders)" 4 | ^ {{#Kernel. #RadialGradient. cX asFloat. cY asFloat. r asFloat}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/rasterize.st: -------------------------------------------------------------------------------- 1 | building-generated 2 | rasterize 3 | "Automatically generated (see generateBuilders)" 4 | ^ {{#Kernel. #Rasterize}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/readFromImageARGB32..st: -------------------------------------------------------------------------------- 1 | building 2 | readFromImageARGB32: aForm 3 | aForm unhibernate. 4 | ^ {{#Kernel. #ReadFromImageARGB32. aForm}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/rectangleSpansMinX.minY.maxX.maxY..st: -------------------------------------------------------------------------------- 1 | building-generated 2 | rectangleSpansMinX: minX minY: minY maxX: maxX maxY: maxY 3 | "Automatically generated (see generateBuilders)" 4 | ^ {{#Kernel. #RectangleSpans. minX asFloat. minY asFloat. maxX asFloat. maxY asFloat}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/reflectGradient.st: -------------------------------------------------------------------------------- 1 | building-generated 2 | reflectGradient 3 | "Automatically generated (see generateBuilders)" 4 | ^ {{#Kernel. #ReflectGradient}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/reflectTextureDX.dY..st: -------------------------------------------------------------------------------- 1 | building-generated 2 | reflectTextureDX: dX dY: dY 3 | "Automatically generated (see generateBuilders)" 4 | ^ {{#Kernel. #ReflectTexture. dX asFloat. dY asFloat}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/repeatGradient.st: -------------------------------------------------------------------------------- 1 | building-generated 2 | repeatGradient 3 | "Automatically generated (see generateBuilders)" 4 | ^ {{#Kernel. #RepeatGradient}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/repeatTextureDX.dY..st: -------------------------------------------------------------------------------- 1 | building-generated 2 | repeatTextureDX: dX dY: dY 3 | "Automatically generated (see generateBuilders)" 4 | ^ {{#Kernel. #RepeatTexture. dX asFloat. dY asFloat}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/strokeBezierPathW.l.c..st: -------------------------------------------------------------------------------- 1 | building-generated 2 | strokeBezierPathW: w l: l c: c 3 | "Automatically generated (see generateBuilders)" 4 | ^ {{#Kernel. #StrokeBezierPath. w asFloat. l asFloat. c asFloat}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/syncIfNeeded.st: -------------------------------------------------------------------------------- 1 | building 2 | syncIfNeeded 3 | commands size > 1000 ifTrue: [self sync] -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/threads..st: -------------------------------------------------------------------------------- 1 | accessing 2 | threads: anInteger 3 | threads := anInteger. -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/threads.st: -------------------------------------------------------------------------------- 1 | accessing 2 | threads 3 | ^threads ifNil: [threads := self threadsDefault] -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/threadsDefault.st: -------------------------------------------------------------------------------- 1 | accessing 2 | threadsDefault 3 | ^Threads ifNil: [self class optimizeNumberOfThreads] 4 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/transformBeziers..st: -------------------------------------------------------------------------------- 1 | building 2 | transformBeziers: aMatrix 3 | ^self transformBeziersMA: aMatrix a11 4 | mB: aMatrix a21 5 | mC: aMatrix a12 6 | mD: aMatrix a22 7 | mE: aMatrix a13 8 | mF: aMatrix a23 -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/transformBeziersMA.mB.mC.mD.mE.mF..st: -------------------------------------------------------------------------------- 1 | building-generated 2 | transformBeziersMA: mA mB: mB mC: mC mD: mD mE: mE mF: mF 3 | "Automatically generated (see generateBuilders)" 4 | ^ {{#Kernel. #TransformBeziers. mA asFloat. mB asFloat. mC asFloat. mD asFloat. mE asFloat. mF asFloat}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/transformPoints..st: -------------------------------------------------------------------------------- 1 | building 2 | transformPoints: aMatrix 3 | ^self transformPointsMA: aMatrix a11 4 | mB: aMatrix a21 5 | mC: aMatrix a12 6 | mD: aMatrix a22 7 | mE: aMatrix a13 8 | mF: aMatrix a23 -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/transformPointsMA.mB.mC.mD.mE.mF..st: -------------------------------------------------------------------------------- 1 | building-generated 2 | transformPointsMA: mA mB: mB mC: mC mD: mD mE: mE mF: mF 3 | "Automatically generated (see generateBuilders)" 4 | ^ {{#Kernel. #TransformPoints. mA asFloat. mB asFloat. mC asFloat. mD asFloat. mE asFloat. mF asFloat}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/uniformColorCA.cR.cG.cB..st: -------------------------------------------------------------------------------- 1 | building-generated 2 | uniformColorCA: cA cR: cR cG: cG cB: cB 3 | "Automatically generated (see generateBuilders)" 4 | ^ {{#Kernel. #UniformColor. cA asFloat. cR asFloat. cG asFloat. cB asFloat}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/instance/writeToImageARGB32..st: -------------------------------------------------------------------------------- 1 | building 2 | writeToImageARGB32: aForm 3 | aForm unhibernate. 4 | ^ {{#Kernel. #WriteToImageARGB32. aForm}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraBindings.class/properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "category" : "GeziraBindings-Base", 3 | "classinstvars" : [ 4 | ], 5 | "classvars" : [ 6 | "ShowPipeline", 7 | "Threads" ], 8 | "commentStamp" : "", 9 | "instvars" : [ 10 | "threads", 11 | "memory", 12 | "commands" ], 13 | "name" : "GeziraBindings", 14 | "pools" : [ 15 | ], 16 | "super" : "Object", 17 | "type" : "normal" } 18 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraCanvas.class/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/damelang/gezira/9f3e6846f4a1732c344a3b99e5d670deac618b17/bindings/squeak/GeziraBindings-Base.MT.package/GeziraCanvas.class/README.md -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraCanvas.class/class/example1.st: -------------------------------------------------------------------------------- 1 | examples 2 | example1 3 | "GeziraCanvas example1" 4 | 5 | | f | 6 | f := Form extent: 500@500 depth: 32. 7 | (GeziraCanvas on: f) 8 | color: (Color red alpha: 0.5); 9 | translateBy: 100@100; 10 | drawPath: self star. 11 | Display getCanvas 12 | translucentImage: f at: 0@0; 13 | forceToScreen: f boundingBox. 14 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraCanvas.class/class/example4.st: -------------------------------------------------------------------------------- 1 | examples 2 | example4 3 | "GeziraCanvas example4" 4 | 5 | | f | 6 | f := Form extent: 500@500 depth: 32. 7 | (GeziraCanvas on: f) 8 | fill: (GeziraFillLinearGradient new 9 | direction: 50@0 offset: 0.5; 10 | addStop: Color blue at: 0; "-infinity to 0" 11 | addStop: Color red at: 0.01; 12 | addStop: Color yellow at: 0.99; 13 | addStop: Color green at: 1); "1 to infinity" 14 | translateBy: 100@100; 15 | rotateBy: 10; 16 | scaleBy: 0.75; 17 | drawPath: self star. 18 | Display getCanvas 19 | translucentImage: f at: 0@0; 20 | forceToScreen: f boundingBox. 21 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraCanvas.class/class/example5.st: -------------------------------------------------------------------------------- 1 | examples 2 | example5 3 | "GeziraCanvas example5" 4 | 5 | | f | 6 | f := Form extent: 500@500 depth: 32. 7 | (GeziraCanvas on: f) 8 | translateBy: 100@100; 9 | rotateBy: 0; 10 | scaleBy: 0.75; 11 | fill: (GeziraFillRadialGradient new 12 | center: 0@0 radius: 200; 13 | addStop: Color red at: 0; 14 | addStop: Color yellow at: 1); 15 | drawRectangle: (20@20 extent: 200@200) radius: 20; 16 | fill: (GeziraFillLinearGradient new 17 | direction: 200@200 offset: 0; 18 | addStop: Color white at: 0; 19 | addStop: Color black at: 1); 20 | stroke: (GeziraStroke width: 6 joints: GeziraStroke miter caps: GeziraStroke miter); 21 | drawRectangle: (20@20 extent: 200@200) radius: 20. 22 | Display getCanvas 23 | translucentImage: f at: 0@0; 24 | forceToScreen: f boundingBox. 25 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraCanvas.class/class/on..st: -------------------------------------------------------------------------------- 1 | instance creation 2 | on: aForm 3 | ^self new setTarget: aForm -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraCanvas.class/class/star.st: -------------------------------------------------------------------------------- 1 | examples 2 | star 3 | ^#(0.0 -100.0 -12.3435 -66.98936 -24.68699 -33.97872 -24.68699 -33.97872 -59.89632 -32.44021 -95.10566 -30.9017 -95.10566 -30.9017 -67.52502 -8.9615 -39.94438 12.97870999999998 -39.94438 12.97870999999998 -49.36145 46.9402 -58.77853 80.90169 -58.77853 80.90169 -29.38927 61.45084 0.0 42.0 0.0 42.0 29.38925999999998 61.45084 58.77852 80.90169 58.77852 80.90169 49.36144 46.9402 39.94437 12.97870999999998 39.94437 12.97870999999998 67.52501 -8.9615 95.10565 -30.9017 95.10565 -30.9017 59.89631 -32.44021 24.68698 -33.97872 24.68698 -33.97872 12.34348999999997 -66.98936 0.0 -100.0) asFloatArray -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraCanvas.class/instance/asShadowCanvas.st: -------------------------------------------------------------------------------- 1 | converting 2 | asShadowCanvas 3 | ^GeziraShadowCanvas new 4 | copyFrom: self; 5 | saveState -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraCanvas.class/instance/clip.st: -------------------------------------------------------------------------------- 1 | accessing 2 | clip 3 | ^clipAndTrans first isRectangle 4 | ifTrue: [clipAndTrans first] 5 | ifFalse: [clipAndTrans first globalBoundsToLocal: clipAndTrans second] -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraCanvas.class/instance/clipBy..st: -------------------------------------------------------------------------------- 1 | clipping 2 | clipBy: aRectangle 3 | | current | 4 | (current := clipAndTrans at: 1) isRectangle 5 | ifTrue: [clipAndTrans at: 1 put: (current clippedBy: aRectangle)] 6 | ifFalse: [ 7 | current isPureTranslation 8 | ifTrue: [clipAndTrans at: 2 9 | put: ((clipAndTrans at: 2) clippedBy: (aRectangle translateBy: current offset))] 10 | ifFalse: [ 11 | current isAxisAligning 12 | ifTrue: [clipAndTrans at: 2 13 | put: ((clipAndTrans at: 2) clippedBy: (Rectangle encompassing: 14 | {current localPointToGlobal: aRectangle origin. 15 | current localPointToGlobal: aRectangle corner}))] 16 | ifFalse: [clipAndTrans addFirst: (self clip clippedBy: aRectangle)]]]. -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraCanvas.class/instance/color..st: -------------------------------------------------------------------------------- 1 | accessing 2 | color: aColor 3 | self fill: aColor asGeziraFill -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraCanvas.class/instance/deferRendering..st: -------------------------------------------------------------------------------- 1 | deferred rendering 2 | deferRendering: aBoolean 3 | "If true, accumulate drawing commands in deferredRenderer until set to false" 4 | aBoolean 5 | ifTrue: [deferredRenderer ifNil: [ 6 | deferredRenderer := GeziraBindings new]] 7 | ifFalse: [ 8 | self flush. 9 | deferredRenderer := nil] 10 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraCanvas.class/instance/draw..st: -------------------------------------------------------------------------------- 1 | drawing 2 | draw: anObject 3 | ^anObject drawOn: self -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraCanvas.class/instance/drawOval..st: -------------------------------------------------------------------------------- 1 | drawing 2 | drawOval: aRectangle 3 | self drawPath: (GeziraPath oval: aRectangle) -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraCanvas.class/instance/drawPath..st: -------------------------------------------------------------------------------- 1 | drawing 2 | drawPath: aPath 3 | "If we have a deferred renderer, append this path to its commands. Otherwise, render immediately and sync." 4 | | g | 5 | (g := deferredRenderer ifNil: [GeziraBindings new]) 6 | appendKernels: ( 7 | g pipeline: ( 8 | {g funnel} 9 | ),( 10 | stroke ifNil: [#()] 11 | ifNotNil: [stroke strokePipelineOn: g] 12 | ),( 13 | clipAndTrans collect: [:each | 14 | each isRectangle 15 | ifTrue: [g clipBeziers: each] 16 | ifFalse: [g transformBeziers: each]] 17 | ),( 18 | fill renderOn: g target: target for: self 19 | )); 20 | pour: aPath from: 1 to: aPath size final: true. 21 | deferredRenderer 22 | ifNil: [g sync] 23 | ifNotNil: [g syncIfNeeded]. 24 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraCanvas.class/instance/drawPolygon..st: -------------------------------------------------------------------------------- 1 | drawing 2 | drawPolygon: aPointArray 3 | self drawPath: (GeziraPath polygon: aPointArray) -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraCanvas.class/instance/drawRectangle..st: -------------------------------------------------------------------------------- 1 | drawing 2 | drawRectangle: aRectangle 3 | self drawPath: aRectangle asGeziraPath -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraCanvas.class/instance/drawRectangle.radius..st: -------------------------------------------------------------------------------- 1 | drawing 2 | drawRectangle: aRectangle radius: aNumber 3 | self drawPath: (GeziraPath rect: aRectangle radius: aNumber) -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraCanvas.class/instance/fill..st: -------------------------------------------------------------------------------- 1 | accessing 2 | fill: aGeziraFill 3 | fill := aGeziraFill -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraCanvas.class/instance/fillOval..st: -------------------------------------------------------------------------------- 1 | old protocol 2 | fillOval: aRectangle 3 | self drawPath: (GeziraPath oval: aRectangle) -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraCanvas.class/instance/fillPolygon..st: -------------------------------------------------------------------------------- 1 | old protocol 2 | fillPolygon: aPointArray 3 | self drawPath: (GeziraPath polygon: aPointArray) -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraCanvas.class/instance/fillRectangle..st: -------------------------------------------------------------------------------- 1 | old protocol 2 | fillRectangle: aRectangle 3 | self drawPath: aRectangle asGeziraPath -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraCanvas.class/instance/flush.st: -------------------------------------------------------------------------------- 1 | deferred rendering 2 | flush 3 | deferredRenderer ifNotNil: [deferredRenderer sync] -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraCanvas.class/instance/frameOval.width..st: -------------------------------------------------------------------------------- 1 | old protocol 2 | frameOval: aRectangle width: aWidth 3 | self strokePath: (GeziraPath oval: aRectangle) width: aWidth 4 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraCanvas.class/instance/framePolygon.width..st: -------------------------------------------------------------------------------- 1 | old protocol 2 | framePolygon: aPointArray width: aNumber 3 | self strokePath: (GeziraPath polygon: aPointArray) width: aNumber -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraCanvas.class/instance/gaussianBlur.size.flatten..st: -------------------------------------------------------------------------------- 1 | effects 2 | gaussianBlur: aPath size: blurSize flatten: flattenFactor 3 | blurSize >= 21 4 | ifTrue: [^self gaussianBlur21x21: aPath flatten: flattenFactor]. 5 | blurSize >= 11 6 | ifTrue: [^self gaussianBlur11x11: aPath flatten: flattenFactor]. 7 | blurSize >= 5 8 | ifTrue: [^self gaussianBlur5x5: aPath flatten: flattenFactor]. 9 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraCanvas.class/instance/inverseTransformation.st: -------------------------------------------------------------------------------- 1 | accessing 2 | inverseTransformation 3 | ^self transform inverseTransformation -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraCanvas.class/instance/isClipCoveredBy..st: -------------------------------------------------------------------------------- 1 | clipping 2 | isClipCoveredBy: aRectangle 3 | 4 | ^ aRectangle containsRect: self clip. -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraCanvas.class/instance/isFullyVisible..st: -------------------------------------------------------------------------------- 1 | clipping 2 | isFullyVisible: aRectangle 3 | ^self clip containsRect: aRectangle -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraCanvas.class/instance/isShadowCanvas.st: -------------------------------------------------------------------------------- 1 | testing 2 | isShadowCanvas 3 | ^false -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraCanvas.class/instance/isVisible..st: -------------------------------------------------------------------------------- 1 | clipping 2 | isVisible: aRectangle 3 | ^self clip intersects: aRectangle -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraCanvas.class/instance/preserveStateDuring..st: -------------------------------------------------------------------------------- 1 | preserve state 2 | preserveStateDuring: aBlock 3 | self saveState. 4 | ^aBlock ensure: [self restoreState]. 5 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraCanvas.class/instance/preserveTransformDuring..st: -------------------------------------------------------------------------------- 1 | preserve state 2 | preserveTransformDuring: aBlock 3 | | old | 4 | old := clipAndTrans copy. 5 | ^aBlock ensure: [clipAndTrans := old]. -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraCanvas.class/instance/restoreState.st: -------------------------------------------------------------------------------- 1 | preserve state 2 | restoreState 3 | "Restore the state from the internal stack" 4 | self copyFrom: previousState. 5 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraCanvas.class/instance/resumeDrawing.st: -------------------------------------------------------------------------------- 1 | drawing 2 | resumeDrawing 3 | (target isArray) ifTrue: [ target := target at: 1. ^true ]. 4 | ^false 5 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraCanvas.class/instance/rotateBy..st: -------------------------------------------------------------------------------- 1 | transforming 2 | rotateBy: angle 3 | ^self transformBy: (MatrixTransform2x3 withAngle: angle) -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraCanvas.class/instance/saveState.st: -------------------------------------------------------------------------------- 1 | preserve state 2 | saveState 3 | "Save the state of the canvas onto the internal stack." 4 | previousState := self clone. 5 | clipAndTrans := clipAndTrans copy. 6 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraCanvas.class/instance/scaleBy..st: -------------------------------------------------------------------------------- 1 | transforming 2 | scaleBy: scale 3 | ^self transformBy: (MatrixTransform2x3 withScale: scale) 4 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraCanvas.class/instance/setTarget..st: -------------------------------------------------------------------------------- 1 | initialize-release 2 | setTarget: aForm 3 | target := aForm. 4 | clipAndTrans := OrderedCollection with: target boundingBox. 5 | self color: Color white. 6 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraCanvas.class/instance/stroke..st: -------------------------------------------------------------------------------- 1 | accessing 2 | stroke: aStrokeOrNil 3 | stroke := aStrokeOrNil 4 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraCanvas.class/instance/strokePath.width..st: -------------------------------------------------------------------------------- 1 | old protocol 2 | strokePath: aPath width: aWidth 3 | stroke := GeziraStroke width: aWidth. 4 | self drawPath: aPath. 5 | stroke := nil. -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraCanvas.class/instance/suspendDrawing.st: -------------------------------------------------------------------------------- 1 | drawing 2 | suspendDrawing 3 | (target isArray) ifFalse: [ target := Array with: target. ^true ]. 4 | ^false 5 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraCanvas.class/instance/transform.st: -------------------------------------------------------------------------------- 1 | accessing 2 | transform 3 | | t | 4 | t := nil. 5 | clipAndTrans reverseDo: [:each | each isRectangle ifFalse: [ 6 | t := t ifNil: [each] ifNotNil: [t composedWithLocal: each]]]. 7 | ^t ifNil: [MatrixTransform2x3 identity] -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraCanvas.class/instance/transformBy..st: -------------------------------------------------------------------------------- 1 | transforming 2 | transformBy: aTransform 3 | | prev | 4 | aTransform isIdentity ifTrue: [^self]. 5 | (prev := clipAndTrans first) isRectangle 6 | ifTrue: [clipAndTrans addFirst: aTransform] 7 | ifFalse: [clipAndTrans at: 1 put: (prev composedWithLocal: aTransform)]. 8 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraCanvas.class/instance/translateBy..st: -------------------------------------------------------------------------------- 1 | transforming 2 | translateBy: offset 3 | ^self transformBy: (MatrixTransform2x3 withOffset: offset) -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraCanvas.class/properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "category" : "GeziraBindings-Base", 3 | "classinstvars" : [ 4 | ], 5 | "classvars" : [ 6 | ], 7 | "commentStamp" : "", 8 | "instvars" : [ 9 | "previousState", 10 | "target", 11 | "clipAndTrans", 12 | "fill", 13 | "stroke", 14 | "deferredRenderer" ], 15 | "name" : "GeziraCanvas", 16 | "pools" : [ 17 | ], 18 | "super" : "Object", 19 | "type" : "normal" } 20 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFill.class/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/damelang/gezira/9f3e6846f4a1732c344a3b99e5d670deac618b17/bindings/squeak/GeziraBindings-Base.MT.package/GeziraFill.class/README.md -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFill.class/class/contrastiveOver..st: -------------------------------------------------------------------------------- 1 | instance creation 2 | contrastiveOver: amount 3 | ^GeziraFillContrastiveOver new amount: amount -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFill.class/class/default.st: -------------------------------------------------------------------------------- 1 | defaults 2 | default 3 | "Answer a default fill instance of a fill class; subclasses reimplement to provide appropriate outfitting of the instance." 4 | 5 | ^ self new -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFill.class/class/defaultFillReplacing..st: -------------------------------------------------------------------------------- 1 | defaults 2 | defaultFillReplacing: aFill 3 | "Answer a default value to use as a fill of this type, given that a previous fill may be in place. This mechanism has not been properly elaborated yet, and may be superceded by a policy of remembering entire fills in properties so if the style is called upon again, the earlier setting will not be lost..." 4 | 5 | ^ self default -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFill.class/class/gradient.center.radius..st: -------------------------------------------------------------------------------- 1 | instance creation 2 | gradient: anArray center: aPoint radius: aNumber 3 | ^GeziraFillRadialGradient new 4 | center: aPoint radius: aNumber; 5 | stops: anArray -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFill.class/class/gradient.direction.offset..st: -------------------------------------------------------------------------------- 1 | instance creation 2 | gradient: anArray direction: aPoint offset: aNumber 3 | ^GeziraFillLinearGradient new 4 | direction: aPoint offset: aNumber; 5 | stops: anArray -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFill.class/class/gradient.from.to..st: -------------------------------------------------------------------------------- 1 | instance creation 2 | gradient: anArray from: startPoint to: endPoint 3 | ^GeziraFillLinearGradient new 4 | from: startPoint to: endPoint; 5 | stops: anArray -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFill.class/class/image..st: -------------------------------------------------------------------------------- 1 | instance creation 2 | image: aForm 3 | ^ GeziraFillImage new 4 | setForm: aForm -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFill.class/class/image.scale..st: -------------------------------------------------------------------------------- 1 | instance creation 2 | image: aForm scale: aNumber 3 | ^ (self image: aForm) 4 | transform: (MatrixTransform2x3 withScale: aNumber) -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFill.class/class/inverseOver..st: -------------------------------------------------------------------------------- 1 | instance creation 2 | inverseOver: fraction 3 | ^GeziraFillInverseOver new fraction: fraction -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFill.class/class/transparent.st: -------------------------------------------------------------------------------- 1 | instance creation 2 | transparent 3 | ^ GeziraFillNone new -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFill.class/class/uniform..st: -------------------------------------------------------------------------------- 1 | instance creation 2 | uniform: aColor 3 | ^ GeziraFillUniform new 4 | setAlpha: aColor alpha 5 | red: aColor red 6 | green: aColor green 7 | blue: aColor blue -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFill.class/instance/asColor.st: -------------------------------------------------------------------------------- 1 | converting 2 | asColor 3 | ^Color transparent -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFill.class/instance/asGeziraFill.st: -------------------------------------------------------------------------------- 1 | converting 2 | asGeziraFill 3 | ^self -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFill.class/instance/fillStyle.st: -------------------------------------------------------------------------------- 1 | queries 2 | fillStyle 3 | "Answer a symbol characterizing the style of fill. This should by rights be reimplemented in each of the GeziraFill subclasses, but in order to minimize contamination of the Gezira classes, the work is currently handled by a single method. Nonmodular but expedient..." 4 | 5 | ^ LFillStyleType fillStyleForFill: self -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFill.class/instance/isOpaque.st: -------------------------------------------------------------------------------- 1 | testing 2 | isOpaque 3 | ^false -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFill.class/instance/isTransparent.st: -------------------------------------------------------------------------------- 1 | testing 2 | isTransparent 3 | ^false 4 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFill.class/instance/isUniform.st: -------------------------------------------------------------------------------- 1 | testing 2 | isUniform 3 | ^false -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFill.class/instance/mixed.with..st: -------------------------------------------------------------------------------- 1 | mixing 2 | mixed: proportion with: other 3 | ^GeziraFillMix new 4 | setFirst: self second: other proportion: proportion -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFill.class/instance/pipelineOn.for..st: -------------------------------------------------------------------------------- 1 | rendering 2 | pipelineOn: g for: aCanvas 3 | self subclassResponsibility -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFill.class/instance/renderOn.target.for..st: -------------------------------------------------------------------------------- 1 | rendering 2 | renderOn: g target: targetForm for: aCanvas 3 | ^{ 4 | g rasterize. 5 | g applyTextureT: (self isOpaque 6 | ifTrue: [self pipelineOn: g for: aCanvas] 7 | ifFalse: [ 8 | g compositeTexturesT1: (self pipelineOn: g for: aCanvas) 9 | t2: (g readFromImageARGB32: targetForm) 10 | c: g compositeOver]). 11 | g writeToImageARGB32: targetForm 12 | } 13 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFill.class/properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "category" : "GeziraBindings-Base", 3 | "classinstvars" : [ 4 | ], 5 | "classvars" : [ 6 | ], 7 | "commentStamp" : "", 8 | "instvars" : [ 9 | ], 10 | "name" : "GeziraFill", 11 | "pools" : [ 12 | ], 13 | "super" : "Object", 14 | "type" : "normal" } 15 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillContrastiveOver.class/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/damelang/gezira/9f3e6846f4a1732c344a3b99e5d670deac618b17/bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillContrastiveOver.class/README.md -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillContrastiveOver.class/instance/amount..st: -------------------------------------------------------------------------------- 1 | accessing 2 | amount: aFloat 3 | amount := aFloat asFloat -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillContrastiveOver.class/instance/renderOn.target.for..st: -------------------------------------------------------------------------------- 1 | rendering 2 | renderOn: g target: targetForm for: aCanvas 3 | ^{ 4 | g rasterize. 5 | g applyTextureT: 6 | (g pipeline: { 7 | g readFromImageARGB32: targetForm. 8 | g contrastiveOverA: amount}). 9 | g writeToImageARGB32: targetForm 10 | } 11 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillContrastiveOver.class/methodProperties.json: -------------------------------------------------------------------------------- 1 | { 2 | "class" : { 3 | }, 4 | "instance" : { 5 | "amount:" : "bf 9/20/2010 18:25", 6 | "renderOn:target:for:" : "bf 4/8/2011 20:40" } } 7 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillContrastiveOver.class/properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "category" : "GeziraBindings-Base", 3 | "classinstvars" : [ 4 | ], 5 | "classvars" : [ 6 | ], 7 | "commentStamp" : "", 8 | "instvars" : [ 9 | "fraction", 10 | "amount" ], 11 | "name" : "GeziraFillContrastiveOver", 12 | "pools" : [ 13 | ], 14 | "super" : "GeziraFill", 15 | "type" : "normal" } 16 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillGradient.class/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/damelang/gezira/9f3e6846f4a1732c344a3b99e5d670deac618b17/bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillGradient.class/README.md -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillGradient.class/instance/addStop.at..st: -------------------------------------------------------------------------------- 1 | accessing 2 | addStop: aColor at: position 3 | self stops add: position asFloat -> aColor asFloatArray -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillGradient.class/instance/asColor.st: -------------------------------------------------------------------------------- 1 | accessing 2 | asColor 3 | ^ Color fromArray: stops first value -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillGradient.class/instance/isOpaque.st: -------------------------------------------------------------------------------- 1 | testing 2 | isOpaque 3 | ^stops allSatisfy: [:ea | ea value last = 1.0] -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillGradient.class/instance/isTransparent.st: -------------------------------------------------------------------------------- 1 | testing 2 | isTransparent 3 | ^stops allSatisfy: [:ea | ea value last isZero] -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillGradient.class/instance/maxGreenStop.st: -------------------------------------------------------------------------------- 1 | mixing 2 | maxGreenStop 3 | "Return the greenest of the stops. If all have the same green, return the color green." 4 | 5 | | maxGreen mgEntry | 6 | maxGreen := stops inject: 0 into: [:green :assoc | 7 | (assoc value at: 2) max: green]. 8 | mgEntry := (stops detect: [:assoc | (assoc value at: 2) = maxGreen] 9 | ifNone: [ ^ Color green]) value. 10 | ^ Color r: (mgEntry at: 1) g: (mgEntry at: 2) b: (mgEntry at: 3) 11 | alpha: (mgEntry at: 4). 12 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillGradient.class/instance/maxRedStop.st: -------------------------------------------------------------------------------- 1 | mixing 2 | maxRedStop 3 | "Return the redest of the stops. If all have the same red, return the color red." 4 | 5 | | maxRed mrEntry | 6 | maxRed := stops inject: 0 into: [:red :assoc | 7 | (assoc value at: 1) max: red]. 8 | mrEntry := (stops detect: [:assoc | (assoc value at: 2) = maxRed] 9 | ifNone: [^ Color red]) value. 10 | ^ Color r: (mrEntry at: 1) g: (mrEntry at: 2) b: (mrEntry at: 3) 11 | alpha: (mrEntry at: 4). 12 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillGradient.class/instance/solidGreenish.st: -------------------------------------------------------------------------------- 1 | mixing 2 | solidGreenish 3 | "Return a color for button rollover that is the greenest of the stops. If all have the same green, return the solid green." 4 | 5 | | maxGreen | 6 | ^ (maxGreen := self maxGreenStop) ~= self maxRedStop 7 | ifTrue: [maxGreen] 8 | ifFalse: [Color green] -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillGradient.class/instance/solidRedish.st: -------------------------------------------------------------------------------- 1 | mixing 2 | solidRedish 3 | "Return a color for button rollover that is the redest of the stops. If all have the same red, return the solid red." 4 | 5 | | maxRed | 6 | ^ (maxRed := self maxRedStop) ~= self maxGreenStop 7 | ifTrue: [maxRed] 8 | ifFalse: [Color red] -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillGradient.class/instance/stops..st: -------------------------------------------------------------------------------- 1 | accessing 2 | stops: aCollection 3 | stops := SortedCollection new. 4 | aCollection do: [:each | self addStop: each value at: each key]. -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillGradient.class/instance/stops.st: -------------------------------------------------------------------------------- 1 | accessing 2 | stops 3 | ^stops ifNil: [stops := SortedCollection new]. 4 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillGradient.class/instance/stopsPipelineOn..st: -------------------------------------------------------------------------------- 1 | rendering 2 | stopsPipelineOn: g 3 | stops size < 2 ifTrue: [^self error: 'too few stops']. 4 | ^g pipeline: ( 5 | (2 to: stops size) collect: [:i | 6 | | prev next l s1 s2 | 7 | prev := stops at: i - 1. 8 | next := stops at: i. 9 | l := next key - prev key. 10 | s1 := prev value. 11 | s2 := next value. 12 | g colorSpanS1A: s1 fourth s1R: s1 first s1G: s1 second s1B: s1 third 13 | s2A: s2 fourth s2R: s2 first s2G: s2 second s2B: s2 third 14 | l: l]) -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillGradient.class/methodProperties.json: -------------------------------------------------------------------------------- 1 | { 2 | "class" : { 3 | }, 4 | "instance" : { 5 | "addStop:at:" : "bf 8/23/2010 16:18", 6 | "asColor" : "bf 9/15/2011 15:44", 7 | "isOpaque" : "bf 9/2/2010 17:41", 8 | "isTransparent" : "bf 8/23/2010 17:43", 9 | "maxGreenStop" : "tk 10/17/2011 15:36", 10 | "maxRedStop" : "tk 10/17/2011 15:37", 11 | "solidGreenish" : "tk 10/17/2011 13:37", 12 | "solidRedish" : "tk 10/17/2011 13:37", 13 | "stops" : "bf 8/23/2010 16:13", 14 | "stops:" : "bf 8/23/2010 16:55", 15 | "stopsPipelineOn:" : "bf 10/17/2011 18:24" } } 16 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillGradient.class/properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "category" : "GeziraBindings-Base", 3 | "classinstvars" : [ 4 | ], 5 | "classvars" : [ 6 | ], 7 | "commentStamp" : "", 8 | "instvars" : [ 9 | "stops" ], 10 | "name" : "GeziraFillGradient", 11 | "pools" : [ 12 | ], 13 | "super" : "GeziraFill", 14 | "type" : "normal" } 15 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillImage.class/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/damelang/gezira/9f3e6846f4a1732c344a3b99e5d670deac618b17/bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillImage.class/README.md -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillImage.class/class/default.st: -------------------------------------------------------------------------------- 1 | defaults 2 | default 3 | "Answer a default image." 4 | 5 | ^ self image: (ScriptingSystem formAtKey: #Image) -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillImage.class/instance/beOpaque.st: -------------------------------------------------------------------------------- 1 | accessing 2 | beOpaque 3 | opaque := true -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillImage.class/instance/form.st: -------------------------------------------------------------------------------- 1 | accessing 2 | form 3 | ^form -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillImage.class/instance/isOpaque.st: -------------------------------------------------------------------------------- 1 | testing 2 | isOpaque 3 | ^opaque == true -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillImage.class/instance/noFiltering.st: -------------------------------------------------------------------------------- 1 | accessing 2 | noFiltering 3 | filter := false -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillImage.class/instance/setForm..st: -------------------------------------------------------------------------------- 1 | accessing 2 | setForm: aForm 3 | form := aForm depth < 32 4 | ifTrue: [(aForm asFormOfDepth: 32)fixAlpha] 5 | ifFalse: [aForm]. 6 | opaque := false. 7 | mipmaps := nil. -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillImage.class/instance/transform..st: -------------------------------------------------------------------------------- 1 | accessing 2 | transform: aMatrix2x3 3 | "transform texture coordinates by this matrix. That is, a scale by 2 will result in a texture half the size" 4 | transform := aMatrix2x3 -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillImage.class/instance/transformedExtent.st: -------------------------------------------------------------------------------- 1 | accessing 2 | transformedExtent 3 | ^transform 4 | ifNil: [form extent] 5 | ifNotNil: [form extent / (transform transformDirection: 1@1)] -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillImage.class/methodProperties.json: -------------------------------------------------------------------------------- 1 | { 2 | "class" : { 3 | "default" : "sw 10/20/2010 16:04" }, 4 | "instance" : { 5 | "beOpaque" : "bf 9/2/2010 17:49", 6 | "form" : "bf 8/18/2010 18:21", 7 | "isOpaque" : "bf 9/2/2010 17:48", 8 | "noFiltering" : "bf 7/27/2011 16:25", 9 | "pipelineOn:for:" : "bf 7/17/2012 15:40", 10 | "setForm:" : "bf 10/25/2010 19:15", 11 | "transform:" : "bf 7/17/2012 16:55", 12 | "transformedExtent" : "bf 7/17/2012 16:53" } } 13 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillImage.class/properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "category" : "GeziraBindings-Base", 3 | "classinstvars" : [ 4 | ], 5 | "classvars" : [ 6 | ], 7 | "commentStamp" : "", 8 | "instvars" : [ 9 | "form", 10 | "opaque", 11 | "filter", 12 | "mipmaps", 13 | "transform" ], 14 | "name" : "GeziraFillImage", 15 | "pools" : [ 16 | ], 17 | "super" : "GeziraFill", 18 | "type" : "normal" } 19 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillInverseOver.class/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/damelang/gezira/9f3e6846f4a1732c344a3b99e5d670deac618b17/bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillInverseOver.class/README.md -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillInverseOver.class/instance/fraction..st: -------------------------------------------------------------------------------- 1 | accessing 2 | fraction: aFloat 3 | fraction := aFloat asFloat -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillInverseOver.class/instance/pipelineOn.target.for..st: -------------------------------------------------------------------------------- 1 | rendering 2 | pipelineOn: g target: targetForm for: aCanvas 3 | ^g pipeline: { 4 | g readFromImageARGB32: targetForm. 5 | g inverseOverA: fraction} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillInverseOver.class/methodProperties.json: -------------------------------------------------------------------------------- 1 | { 2 | "class" : { 3 | }, 4 | "instance" : { 5 | "fraction:" : "bf 9/9/2010 17:32", 6 | "pipelineOn:target:for:" : "bf 3/23/2011 23:15" } } 7 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillInverseOver.class/properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "category" : "GeziraBindings-Base", 3 | "classinstvars" : [ 4 | ], 5 | "classvars" : [ 6 | ], 7 | "commentStamp" : "", 8 | "instvars" : [ 9 | "fraction" ], 10 | "name" : "GeziraFillInverseOver", 11 | "pools" : [ 12 | ], 13 | "super" : "GeziraFill", 14 | "type" : "normal" } 15 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillLinearGradient.class/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/damelang/gezira/9f3e6846f4a1732c344a3b99e5d670deac618b17/bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillLinearGradient.class/README.md -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillLinearGradient.class/class/default.st: -------------------------------------------------------------------------------- 1 | defaults 2 | default 3 | "Answer a default fill of the receiver, itself a fill class." 4 | 5 | ^ self new 6 | direction: 50@0 offset: 0.5; 7 | addStop: Color white at: 0; 8 | addStop: Color blue at: 0.5; 9 | addStop: Color black at: 1; 10 | yourself -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillLinearGradient.class/class/defaultFillReplacing..st: -------------------------------------------------------------------------------- 1 | defaults 2 | defaultFillReplacing: aFill 3 | "Answer a default value to use as a fill of this type, given that a previous fill may be in place. If replacing a linear fill, an effort is made to have one of the gradient's stop colors be the color of that uniform fill." 4 | 5 | | gradientFill | 6 | gradientFill := self new. 7 | gradientFill direction: (50 @ 0) offset: 0.5. 8 | 9 | (aFill isKindOf: GeziraFillGradient) 10 | ifTrue: 11 | [gradientFill stops: aFill stops] 12 | ifFalse: 13 | [(aFill isKindOf: GeziraFillUniform) 14 | ifTrue: 15 | [gradientFill addStop: aFill asColor at: 0.01] 16 | ifFalse: 17 | [gradientFill addStop: Color red at: 0.01]. 18 | 19 | gradientFill addStop: Color white at: 0.5. 20 | gradientFill addStop: Color blue at: 0.99]. 21 | 22 | ^ gradientFill -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillLinearGradient.class/instance/direction..st: -------------------------------------------------------------------------------- 1 | accessing 2 | direction: aPoint 3 | "Deprecated, use from/to instead" 4 | self direction: aPoint offset: offset -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillLinearGradient.class/instance/direction.offset..st: -------------------------------------------------------------------------------- 1 | accessing 2 | direction: aPoint offset: zeroToOne 3 | "Deprecated, use from/to instead" 4 | delta := aPoint / (aPoint dotProduct: aPoint) asFloat. 5 | offset := zeroToOne asFloat. 6 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillLinearGradient.class/instance/direction.st: -------------------------------------------------------------------------------- 1 | accessing 2 | direction 3 | "Deprecated, use from/to instead" 4 | from ifNil: [self fromTo]. 5 | ^ to - from -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillLinearGradient.class/instance/fillInOldArgs.st: -------------------------------------------------------------------------------- 1 | accessing 2 | fillInOldArgs 3 | "Calculate old delta and offset from new from/to. Should go away ASAP" 4 | | gradientVector gradientLength distanceFromOrigin | 5 | gradientVector := to - from. 6 | gradientLength := gradientVector r. 7 | distanceFromOrigin := from dotProduct: (gradientVector / gradientLength). 8 | self direction: gradientVector 9 | offset: distanceFromOrigin negated / gradientLength -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillLinearGradient.class/instance/from.to..st: -------------------------------------------------------------------------------- 1 | accessing 2 | from: startPoint to: endPoint 3 | from := startPoint. 4 | to := endPoint. 5 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillLinearGradient.class/instance/fromTo.st: -------------------------------------------------------------------------------- 1 | accessing 2 | fromTo 3 | | distanceFromOrigin gradientLength gradientVector | 4 | from ifNil: [ 5 | "infer to/from based on deprecated delta/offset" 6 | gradientVector := delta * ((1.0 / delta r) raisedTo: 2). 7 | gradientLength := gradientVector r. 8 | distanceFromOrigin := offset * gradientLength negated. 9 | from := (gradientVector / gradientLength) * distanceFromOrigin. 10 | to := from + gradientVector. 11 | from := from roundTo: 0.000001@0.000001. 12 | to := to roundTo: 0.000001@0.000001]. 13 | ^ {from. to} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillLinearGradient.class/instance/offset..st: -------------------------------------------------------------------------------- 1 | accessing 2 | offset: zeroToOne 3 | "Deprecated, use from/to instead" 4 | offset := zeroToOne asFloat -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillLinearGradient.class/instance/offset.st: -------------------------------------------------------------------------------- 1 | accessing 2 | offset 3 | "Deprecated, use from/to instead" 4 | offset ifNil: [self fillInOldArgs]. 5 | ^ offset -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillLinearGradient.class/instance/pipelineOn.for..st: -------------------------------------------------------------------------------- 1 | rendering 2 | pipelineOn: g for: aCanvas 3 | from ifNil: [self fromTo]. 4 | ^g pipeline: { 5 | g transformPoints: aCanvas inverseTransformation. 6 | g linearGradientSX: from x sY: from y eX: to x eY: to y. 7 | g padGradient. 8 | g applyColorSpansSpans: (self stopsPipelineOn: g)} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillLinearGradient.class/instance/printOn..st: -------------------------------------------------------------------------------- 1 | rendering 2 | printOn: aStream 3 | from ifNil: [self fromTo]. 4 | aStream nextPutAll: self class name; 5 | nextPut: $(; 6 | nextPutAll: from printString; 7 | nextPutAll: ', '; 8 | nextPutAll: to printString; 9 | nextPut: $). -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillLinearGradient.class/methodProperties.json: -------------------------------------------------------------------------------- 1 | { 2 | "class" : { 3 | "default" : "sw 9/1/2010 21:42", 4 | "defaultFillReplacing:" : "sw 10/12/2010 14:48" }, 5 | "instance" : { 6 | "direction" : "bf 11/18/2011 19:28", 7 | "direction:" : "bf 11/18/2011 19:29", 8 | "direction:offset:" : "bf 11/18/2011 19:29", 9 | "fillInOldArgs" : "bf 11/18/2011 19:29", 10 | "from:to:" : "bf 11/18/2011 19:20", 11 | "fromTo" : "bf 11/18/2011 19:40", 12 | "offset" : "bf 11/18/2011 19:28", 13 | "offset:" : "bf 11/18/2011 19:28", 14 | "pipelineOn:for:" : "bf 11/18/2011 19:16", 15 | "printOn:" : "bf 11/18/2011 19:31" } } 16 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillLinearGradient.class/properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "category" : "GeziraBindings-Base", 3 | "classinstvars" : [ 4 | ], 5 | "classvars" : [ 6 | ], 7 | "commentStamp" : "", 8 | "instvars" : [ 9 | "delta", 10 | "offset", 11 | "from", 12 | "to" ], 13 | "name" : "GeziraFillLinearGradient", 14 | "pools" : [ 15 | ], 16 | "super" : "GeziraFillGradient", 17 | "type" : "normal" } 18 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillMix.class/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/damelang/gezira/9f3e6846f4a1732c344a3b99e5d670deac618b17/bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillMix.class/README.md -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillMix.class/instance/isOpaque.st: -------------------------------------------------------------------------------- 1 | testing 2 | isOpaque 3 | ^first isOpaque and: [second isOpaque] -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillMix.class/instance/isTransparent.st: -------------------------------------------------------------------------------- 1 | testing 2 | isTransparent 3 | ^first isTransparent and: [second isTransparent] -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillMix.class/instance/pipelineOn.for..st: -------------------------------------------------------------------------------- 1 | rendering 2 | pipelineOn: g for: aCanvas 3 | ^g compositeTexturesT1: (first pipelineOn: g for: aCanvas) 4 | t2: (second pipelineOn: g for: aCanvas) 5 | c: g compositeOver 6 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillMix.class/instance/setFirst.second.proportion..st: -------------------------------------------------------------------------------- 1 | accessing 2 | setFirst: firstFill second: secondFill proportion: aFloat 3 | first := firstFill. 4 | second := secondFill. 5 | proportion := aFloat. -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillMix.class/methodProperties.json: -------------------------------------------------------------------------------- 1 | { 2 | "class" : { 3 | }, 4 | "instance" : { 5 | "isOpaque" : "bf 9/2/2010 17:42", 6 | "isTransparent" : "bf 9/2/2010 17:42", 7 | "pipelineOn:for:" : "bf 3/17/2011 17:52", 8 | "setFirst:second:proportion:" : "bf 8/18/2010 18:58" } } 9 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillMix.class/properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "category" : "GeziraBindings-Base", 3 | "classinstvars" : [ 4 | ], 5 | "classvars" : [ 6 | ], 7 | "commentStamp" : "", 8 | "instvars" : [ 9 | "first", 10 | "second", 11 | "proportion" ], 12 | "name" : "GeziraFillMix", 13 | "pools" : [ 14 | ], 15 | "super" : "GeziraFill", 16 | "type" : "normal" } 17 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillNone.class/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/damelang/gezira/9f3e6846f4a1732c344a3b99e5d670deac618b17/bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillNone.class/README.md -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillNone.class/class/default.st: -------------------------------------------------------------------------------- 1 | defaults 2 | default 3 | "Answer a default fill of the receiver, itself a fill class." 4 | 5 | ^ GeziraFill transparent -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillNone.class/instance/isTransparent.st: -------------------------------------------------------------------------------- 1 | testing 2 | isTransparent 3 | ^true -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillNone.class/instance/pipelineOn.for..st: -------------------------------------------------------------------------------- 1 | rendering 2 | pipelineOn: g for: aCanvas 3 | ^g uniformColorCA: 0.0 cR: 0.0 cG: 0.0 cB: 0.0 -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillNone.class/methodProperties.json: -------------------------------------------------------------------------------- 1 | { 2 | "class" : { 3 | "default" : "sw 9/1/2010 21:45" }, 4 | "instance" : { 5 | "isTransparent" : "bf 8/18/2010 19:15", 6 | "pipelineOn:for:" : "bf 1/26/2011 18:03" } } 7 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillNone.class/properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "category" : "GeziraBindings-Base", 3 | "classinstvars" : [ 4 | ], 5 | "classvars" : [ 6 | ], 7 | "commentStamp" : "", 8 | "instvars" : [ 9 | ], 10 | "name" : "GeziraFillNone", 11 | "pools" : [ 12 | ], 13 | "super" : "GeziraFill", 14 | "type" : "normal" } 15 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillRadialGradient.class/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/damelang/gezira/9f3e6846f4a1732c344a3b99e5d670deac618b17/bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillRadialGradient.class/README.md -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillRadialGradient.class/class/default.st: -------------------------------------------------------------------------------- 1 | defaults 2 | default 3 | "Answer a default fill of the receiver, itself a fill class." 4 | 5 | ^ self new 6 | center: 0@0 radius: 200; 7 | addStop: Color red at: 0; 8 | addStop: Color yellow at: 1; 9 | yourself -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillRadialGradient.class/class/defaultFillReplacing..st: -------------------------------------------------------------------------------- 1 | defaults 2 | defaultFillReplacing: aFill 3 | "Answer a default value to use as a fill of this type, given that a previous fill may be in place. If replacing a radial fill, an effort is made to have one of the gradient's stop colors be the color of that uniform fill." 4 | 5 | | gradientFill | 6 | gradientFill := self new. 7 | gradientFill center: 0@0 radius: 200. 8 | 9 | (aFill isKindOf: GeziraFillGradient) 10 | ifTrue: 11 | [gradientFill stops: aFill stops] 12 | ifFalse: 13 | [(aFill isKindOf: GeziraFillUniform) 14 | ifTrue: 15 | [gradientFill addStop: aFill asColor at: 0.01] 16 | ifFalse: 17 | [gradientFill addStop: Color red at: 0.01]. 18 | 19 | gradientFill addStop: Color white at: 0.5. 20 | gradientFill addStop: Color blue at: 0.99]. 21 | 22 | ^ gradientFill -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillRadialGradient.class/instance/center..st: -------------------------------------------------------------------------------- 1 | accessing 2 | center: aPoint 3 | "Set the receiver's center." 4 | 5 | self center: aPoint radius: radius -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillRadialGradient.class/instance/center.radius..st: -------------------------------------------------------------------------------- 1 | accessing 2 | center: aPoint radius: aNumber 3 | center := aPoint. 4 | radius := aNumber. 5 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillRadialGradient.class/instance/center.st: -------------------------------------------------------------------------------- 1 | accessing 2 | center 3 | "Answer the receiver's center." 4 | 5 | ^ center -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillRadialGradient.class/instance/fromTo.st: -------------------------------------------------------------------------------- 1 | accessing 2 | fromTo 3 | 4 | ^ {center. center + (1.0@0 * radius)} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillRadialGradient.class/instance/pipelineOn.for..st: -------------------------------------------------------------------------------- 1 | rendering 2 | pipelineOn: g for: aCanvas 3 | ^g pipeline: { 4 | g transformPoints: aCanvas inverseTransformation. 5 | g radialGradientCX: center x cY: center y r: radius. 6 | g padGradient. 7 | g applyColorSpansSpans: (self stopsPipelineOn: g)} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillRadialGradient.class/instance/radius..st: -------------------------------------------------------------------------------- 1 | accessing 2 | radius: aNumber 3 | "Set the radius." 4 | 5 | self center: center radius: aNumber asNumber -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillRadialGradient.class/instance/radius.st: -------------------------------------------------------------------------------- 1 | accessing 2 | radius 3 | "Answer the radius of the radial gradient." 4 | 5 | ^ radius -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillRadialGradient.class/methodProperties.json: -------------------------------------------------------------------------------- 1 | { 2 | "class" : { 3 | "default" : "sw 9/1/2010 21:53", 4 | "defaultFillReplacing:" : "sw 10/22/2010 01:48" }, 5 | "instance" : { 6 | "center" : "sw 10/12/2010 13:42", 7 | "center:" : "sw 10/13/2010 17:12", 8 | "center:radius:" : "bf 8/20/2010 17:43", 9 | "fromTo" : "yo 9/19/2011 22:44", 10 | "pipelineOn:for:" : "bf 10/17/2011 19:14", 11 | "radius" : "sw 10/12/2010 15:03", 12 | "radius:" : "sw 10/12/2010 15:05" } } 13 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillRadialGradient.class/properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "category" : "GeziraBindings-Base", 3 | "classinstvars" : [ 4 | ], 5 | "classvars" : [ 6 | ], 7 | "commentStamp" : "", 8 | "instvars" : [ 9 | "center", 10 | "radius" ], 11 | "name" : "GeziraFillRadialGradient", 12 | "pools" : [ 13 | ], 14 | "super" : "GeziraFillGradient", 15 | "type" : "normal" } 16 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillUniform.class/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/damelang/gezira/9f3e6846f4a1732c344a3b99e5d670deac618b17/bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillUniform.class/README.md -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillUniform.class/class/default.st: -------------------------------------------------------------------------------- 1 | defaults 2 | default 3 | "Answer a default fill of the receiver, itself a fill class." 4 | 5 | ^ self uniform: Color cyan lighter -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillUniform.class/class/defaultFillReplacing..st: -------------------------------------------------------------------------------- 1 | defaults 2 | defaultFillReplacing: aFill 3 | "Answer a default value to use as a fill of this type, given that a previous fill may be in place. This mechanism has not been properly elaborated yet, and may be superceded by a policy of remembering entire fills in properties so if the style is called upon again, the earlier settings will not be lost..." 4 | 5 | (aFill isKindOf: self) ifTrue: 6 | [^ self uniform: aFill asColor]. 7 | (aFill isKindOf: GeziraFillGradient) ifTrue: 8 | [^ self uniform: (Color colorFrom: aFill stops first value)]. 9 | 10 | ^ self default -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillUniform.class/instance/alpha.st: -------------------------------------------------------------------------------- 1 | accessing 2 | alpha 3 | ^alpha -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillUniform.class/instance/asColor.st: -------------------------------------------------------------------------------- 1 | converting 2 | asColor 3 | ^Color r: red g: green b: blue alpha: alpha -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillUniform.class/instance/blue.st: -------------------------------------------------------------------------------- 1 | accessing 2 | blue 3 | ^blue -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillUniform.class/instance/green.st: -------------------------------------------------------------------------------- 1 | accessing 2 | green 3 | ^green -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillUniform.class/instance/isOpaque.st: -------------------------------------------------------------------------------- 1 | testing 2 | isOpaque 3 | ^alpha = 1.0 -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillUniform.class/instance/isTransparent.st: -------------------------------------------------------------------------------- 1 | testing 2 | isTransparent 3 | ^alpha isZero -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillUniform.class/instance/isUniform.st: -------------------------------------------------------------------------------- 1 | testing 2 | isUniform 3 | ^true -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillUniform.class/instance/mixed.with..st: -------------------------------------------------------------------------------- 1 | mixing 2 | mixed: proportion with: other 3 | | frac1 frac2 | 4 | other class == self class 5 | ifFalse: [^super mixed: proportion with: other]. 6 | frac1 := proportion asFloat min: 1.0 max: 0.0. 7 | frac2 := 1.0 - frac1. 8 | ^ self class new 9 | setAlpha: alpha * frac1 + (other alpha * frac2) 10 | red: red * frac1 + (other red * frac2) 11 | green: green * frac1 + (other green * frac2) 12 | blue: blue * frac1 + (other blue * frac2) -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillUniform.class/instance/pipelineOn.for..st: -------------------------------------------------------------------------------- 1 | rendering 2 | pipelineOn: g for: aCanvas 3 | ^g uniformColorCA: alpha cR: red cG: green cB: blue -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillUniform.class/instance/printOn..st: -------------------------------------------------------------------------------- 1 | rendering 2 | printOn: aStream 3 | 4 | super printOn: aStream. 5 | aStream nextPut: $(; 6 | nextPutAll: self asColor printString; 7 | nextPut: $) 8 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillUniform.class/instance/red.st: -------------------------------------------------------------------------------- 1 | accessing 2 | red 3 | ^red -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillUniform.class/instance/renderOn.target.for..st: -------------------------------------------------------------------------------- 1 | rendering 2 | renderOn: g target: targetForm for: aCanvas 3 | ^{ g rasterize. 4 | g compositeUniformColorCA: alpha cR: red cG: green cB: blue overImageARGB32: targetForm } 5 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillUniform.class/instance/setAlpha.red.green.blue..st: -------------------------------------------------------------------------------- 1 | accessing 2 | setAlpha: a red: r green: g blue: b 3 | alpha := a asFloat. 4 | red := r asFloat. 5 | green := g asFloat. 6 | blue := b asFloat. 7 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillUniform.class/methodProperties.json: -------------------------------------------------------------------------------- 1 | { 2 | "class" : { 3 | "default" : "sw 9/1/2010 21:44", 4 | "defaultFillReplacing:" : "sw 10/25/2010 15:30" }, 5 | "instance" : { 6 | "alpha" : "bf 8/18/2010 18:17", 7 | "asColor" : "sw 12/6/2010 13:14", 8 | "blue" : "bf 8/18/2010 18:17", 9 | "green" : "bf 8/18/2010 18:17", 10 | "isOpaque" : "bf 9/2/2010 17:45", 11 | "isTransparent" : "bf 8/18/2010 19:16", 12 | "isUniform" : "bf 6/27/2012 15:31", 13 | "mixed:with:" : "bf 8/18/2010 19:12", 14 | "pipelineOn:for:" : "bf 1/26/2011 18:04", 15 | "printOn:" : "yo 10/13/2011 19:00", 16 | "red" : "bf 8/18/2010 18:17", 17 | "renderOn:target:for:" : "bf 3/22/2011 19:02", 18 | "setAlpha:red:green:blue:" : "bf 8/5/2010 17:06" } } 19 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFillUniform.class/properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "category" : "GeziraBindings-Base", 3 | "classinstvars" : [ 4 | ], 5 | "classvars" : [ 6 | ], 7 | "commentStamp" : "", 8 | "instvars" : [ 9 | "alpha", 10 | "red", 11 | "green", 12 | "blue" ], 13 | "name" : "GeziraFillUniform", 14 | "pools" : [ 15 | ], 16 | "super" : "GeziraFill", 17 | "type" : "normal" } 18 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFilledPath.class/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/damelang/gezira/9f3e6846f4a1732c344a3b99e5d670deac618b17/bindings/squeak/GeziraBindings-Base.MT.package/GeziraFilledPath.class/README.md -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFilledPath.class/instance/drawOn..st: -------------------------------------------------------------------------------- 1 | drawing 2 | drawOn: aCanvas 3 | fill ifNotNil: [aCanvas fill: fill]. 4 | super drawOn: aCanvas. -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFilledPath.class/instance/fill..st: -------------------------------------------------------------------------------- 1 | accessing 2 | fill: aFill 3 | fill := aFill ifNotNil: [aFill asGeziraFill] -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFilledPath.class/instance/fill.st: -------------------------------------------------------------------------------- 1 | accessing 2 | fill 3 | ^fill -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFilledPath.class/instance/transformedBy..st: -------------------------------------------------------------------------------- 1 | converting 2 | transformedBy: aTransform 3 | | path | 4 | path := super transformedBy: aTransform. 5 | path fill: fill. 6 | ^ path. 7 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFilledPath.class/methodProperties.json: -------------------------------------------------------------------------------- 1 | { 2 | "class" : { 3 | }, 4 | "instance" : { 5 | "drawOn:" : "bf 9/30/2010 17:48", 6 | "fill" : "bf 8/31/2010 16:24", 7 | "fill:" : "bf 10/5/2010 19:12", 8 | "transformedBy:" : "tak 9/2/2011 14:27" } } 9 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraFilledPath.class/properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "category" : "GeziraBindings-Base", 3 | "classinstvars" : [ 4 | ], 5 | "classvars" : [ 6 | ], 7 | "commentStamp" : "", 8 | "instvars" : [ 9 | "fill" ], 10 | "name" : "GeziraFilledPath", 11 | "pools" : [ 12 | ], 13 | "super" : "GeziraPath", 14 | "type" : "normal" } 15 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPath.class/README.md: -------------------------------------------------------------------------------- 1 | Holds either a flat FloatArray suitable for rendering using the GeziraBindings plugin, or an array of contours suitable for rendering using balloon. Also converts between both. -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPath.class/class/arc..st: -------------------------------------------------------------------------------- 1 | instance creation 2 | arc: x 3 | 4 | ^ self arc: 0 to: x. 5 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPath.class/class/arc.to..st: -------------------------------------------------------------------------------- 1 | instance creation 2 | arc: x to: y 3 | 4 | ^ self new points: {(self arcPoints: x to: y)}. 5 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPath.class/class/arc.to.center.radius..st: -------------------------------------------------------------------------------- 1 | instance creation 2 | arc: x to: y center: c radius: r 3 | 4 | | a | 5 | a := self arcPoints: x to: y center: c radius: r. 6 | ^ self new points: {(Array with: c with: c with: a first), a, (Array with: a last with: a last with: c)}. 7 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPath.class/class/build..st: -------------------------------------------------------------------------------- 1 | instance creation 2 | build: aBlock 3 | | builder | 4 | builder := GeziraPathBuilder new. 5 | aBlock value: builder. 6 | ^self new floats: builder floats -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPath.class/class/line.to..st: -------------------------------------------------------------------------------- 1 | instance creation 2 | line: fromPoint to: toPoint 3 | ^self new points: {{fromPoint. fromPoint. toPoint}} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPath.class/class/noiseSamplesFrom.to.p..st: -------------------------------------------------------------------------------- 1 | private 2 | noiseSamplesFrom: from to: to p: p 3 | | rand unit unitP unitMag | 4 | rand := Random new. 5 | unit := to - from. 6 | unitMag := unit r. 7 | unitMag <= 1.0 ifTrue: [^ #()]. 8 | unitP := (unit y@unit x negated) * p / (unitMag log: 8). 9 | ^ (0.0 to: 1.0 by: 0.125) collect: [:f | 10 | from + (unit * f) + (((f = 0.0 or: [f = 1.0]) ifTrue: [0.0] ifFalse: [rand next - 0.5]) * unitP)]. 11 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPath.class/class/oval..st: -------------------------------------------------------------------------------- 1 | instance creation 2 | oval: aRectangle 3 | | a b c d e | 4 | a := 0.1464466094067263. "(1 - sin(pi/4)) / 2" 5 | b := 0.308658283817455. "(1 - sin(pi/8)) / 2" 6 | c := 0.5. 7 | d := 1-b. 8 | e := 1-a. 9 | ^self new points: { 10 | { 11 | 0@c. 0@b. a@a. a@a. b@0. c@0. 12 | c@0. d@0. e@a. e@a. 1@b. 1@c. 13 | 1@c. 1@d. e@e. e@e. d@1. c@1. 14 | c@1. b@1. a@e. a@e. 0@d. 0@c 15 | } collect: [:p | p * aRectangle extent + aRectangle origin]} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPath.class/class/path..st: -------------------------------------------------------------------------------- 1 | instance creation 2 | path: aPath 3 | self class == aPath class 4 | ifTrue: [^aPath]. 5 | ^self new, aPath asGeziraPath -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPath.class/class/polygon..st: -------------------------------------------------------------------------------- 1 | instance creation 2 | polygon: aPointArray 3 | ^self new points: { 4 | Array streamContents: [:stream | 5 | aPointArray withIndexDo: [:p1 :i | | p2 | 6 | p2 := aPointArray atWrap: i + 1. 7 | stream nextPut: p1; nextPut: p2; nextPut: p2]]} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPath.class/class/polyline..st: -------------------------------------------------------------------------------- 1 | instance creation 2 | polyline: aPointArray 3 | ^self new points: { 4 | Array streamContents: [:stream | 5 | 1 to: aPointArray size - 1 do: [:i | | p1 p2 | 6 | p1 := aPointArray at: i. 7 | p2 := aPointArray at: i + 1. 8 | stream nextPut: p1; nextPut: p2; nextPut: p2]]} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPath.class/class/rect.radii..st: -------------------------------------------------------------------------------- 1 | instance creation 2 | rect: rect radii: anArray 3 | |rs tl bl br tr | 4 | (anArray allSatisfy: [:r | r <= 0]) 5 | ifTrue: [^self path: rect asGeziraPath]. 6 | rs := anArray collect: [:r |((r max: 0.0) min: rect width * 0.5) min: rect height * 0.5]. 7 | tl := rs first. 8 | bl := rs second. 9 | br := rs third. 10 | tr := rs fourth. 11 | ^self build: [:builder | builder 12 | pos: rect topLeft + (0.0@tl) dir: 0.0 @ -1.0; 13 | right: tl; line: rect width - tl - tr; 14 | right: tr; line: rect height - tr - br; 15 | right: br; line: rect width - br - bl; 16 | right: bl; close 17 | ] -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPath.class/class/rect.radius..st: -------------------------------------------------------------------------------- 1 | instance creation 2 | rect: rect radius: radius 3 | | r | 4 | radius <= 0 5 | ifTrue: [^self path: rect asGeziraPath]. 6 | r := (radius min: rect width * 0.5) min: rect height * 0.5. 7 | ^ self build: [:builder | builder 8 | pos: rect topLeft + (0.0 @ r) dir: (0.0 @ -1.0); 9 | right: r; line: rect width - (2.0 * r); 10 | right: r; line: rect height - (2.0 * r); 11 | right: r; line: rect width - (2.0 * r); 12 | right: r; close 13 | ] -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPath.class/class/rect.radius.at..st: -------------------------------------------------------------------------------- 1 | instance creation 2 | rect: rect radius: radius at: whichCorners 3 | "whichCorners is an array of symbols specifying which corners to round (that is, any combination of #all, #bottom, #bottomLeft, #bottomRight, #left, #right, #top, #topLeft, #topRight)" 4 | 5 | ^self rect: rect radii: (#( 6 | (left top topLeft all) 7 | (left bottom bottomLeft all) 8 | (right bottom bottomRight all) 9 | (right top topRight all)) collect: [:corners | 10 | ((corners includes: whichCorners) or: [corners includesAnyOf: whichCorners]) 11 | ifTrue: [radius] 12 | ifFalse: [0]]) 13 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPath.class/class/sketchyLineFrom.to.p..st: -------------------------------------------------------------------------------- 1 | instance creation 2 | sketchyLineFrom: from to: to p: p 3 | ^ self new points: {self sketchyPointsFrom: from to: to p: p}. 4 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPath.class/class/sketchyPointsFrom.to.p..st: -------------------------------------------------------------------------------- 1 | private 2 | sketchyPointsFrom: from to: to p: p 3 | | sequence midPoints points | 4 | sequence := self noiseSamplesFrom: from to: to p: p. 5 | sequence size = 0 ifTrue: [^ #()]. 6 | midPoints := (1 to: sequence size - 1) collect: [:i | 7 | ((sequence at: i) + (sequence at: i+1)) / 2.0]. 8 | points := Array streamContents: [:strm | 9 | strm nextPut: (sequence at: 1); 10 | nextPut: (sequence at: 1); 11 | nextPut: (midPoints at: 1). 12 | 2 to: sequence size - 1 do: [:i | 13 | strm 14 | nextPut: (midPoints at: i-1); 15 | nextPut: (sequence at: i); 16 | nextPut: (midPoints at: i)]. 17 | strm 18 | nextPut: (midPoints last); 19 | nextPut: (midPoints last); 20 | nextPut: (sequence last)]. 21 | ^ points. 22 | 23 | 24 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPath.class/class/sketchyRect..st: -------------------------------------------------------------------------------- 1 | instance creation 2 | sketchyRect: aRectangle 3 | | ps origin corner p | 4 | origin := aRectangle origin. 5 | corner := aRectangle corner. 6 | p := 0.05. 7 | ps := Array streamContents: [:strm | 8 | strm nextPutAll: (self sketchyPointsFrom: origin to: (corner x@origin y) p: p). 9 | strm nextPutAll: (self sketchyPointsFrom: (corner x@origin y) to: corner p: p). 10 | strm nextPutAll: (self sketchyPointsFrom: corner to: (origin x@corner y) p: p). 11 | strm nextPutAll: (self sketchyPointsFrom: (origin x@corner y) to: origin p: p)]. 12 | ^ self new points: {ps}. 13 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPath.class/instance/^comma.st: -------------------------------------------------------------------------------- 1 | converting 2 | , aPath 3 | self floats: ((floats isNil and: [points isNil]) 4 | ifTrue: [aPath asGeziraPath floats] 5 | ifFalse: [self floats, aPath asGeziraPath floats]) 6 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPath.class/instance/asClosedPath.st: -------------------------------------------------------------------------------- 1 | converting 2 | asClosedPath 3 | "Add a line segment from last to first point if they are not identical. This is only correct if this path has a single contour. For multiple contours, use the more expensive #withClosedContours." 4 | | s x0 y0 x1 y1 | 5 | s := self floats size. 6 | s = 0 ifTrue: [^self]. 7 | x0 := floats at: 1. 8 | y0 := floats at: 2. 9 | x1 := floats at: s-1. 10 | y1 := floats at: s. 11 | ^ (x0 = x1 and: [y0 = y1]) 12 | ifTrue: [self] 13 | ifFalse: [self clone 14 | floats: (self floats, {x1. y1. x1. y1. x0. y0})]. 15 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPath.class/instance/asFloatArray.st: -------------------------------------------------------------------------------- 1 | converting 2 | asFloatArray 3 | ^self floats -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPath.class/instance/asGeziraPath.st: -------------------------------------------------------------------------------- 1 | converting 2 | asGeziraPath 3 | ^self -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPath.class/instance/bounds.st: -------------------------------------------------------------------------------- 1 | accessing 2 | bounds 3 | ^self boundsWithTransform: MatrixTransform2x3 identity -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPath.class/instance/boundsWithTransform..st: -------------------------------------------------------------------------------- 1 | accessing 2 | boundsWithTransform: transform 3 | ^self boundsWithTransform: transform stroke: self stroke -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPath.class/instance/boundsWithTransform.clip.stroke..st: -------------------------------------------------------------------------------- 1 | accessing 2 | boundsWithTransform: transform clip: aRectangle stroke: aStroke 3 | "If no bound can be found within the clip rect, this answers a Rectangle with negative extent" 4 | | bnds g | 5 | bnds := FloatArray new: 4. 6 | (g := GeziraBindings new) 7 | kernels: (g pipeline: 8 | {g funnel}, 9 | (aStroke ifNotNil: [ 10 | aStroke strokePipelineOn: g] 11 | ifNil: [#()]),{ 12 | g transformBeziers: transform. 13 | g clipBeziers: aRectangle. 14 | g calculateBounds. 15 | g capture: bnds}); 16 | pour: self floats from: 1 to: self floats size final: true; 17 | sync. 18 | ^bnds first@bnds second corner: bnds third@bnds fourth -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPath.class/instance/boundsWithTransform.stroke..st: -------------------------------------------------------------------------------- 1 | accessing 2 | boundsWithTransform: transform stroke: aStroke 3 | | bnds g | 4 | bnds := FloatArray new: 4. 5 | (g := GeziraBindings new) 6 | kernels: ( 7 | g pipeline: 8 | {g funnel}, 9 | (aStroke ifNil: [#()] 10 | ifNotNil: [aStroke strokePipelineOn: g] 11 | ), 12 | { 13 | g transformBeziers: transform. 14 | g calculateBounds. 15 | g capture: bnds}); 16 | pour: self floats from: 1 to: self floats size final: true; 17 | sync. 18 | ^bnds first@bnds second corner: bnds third@bnds fourth -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPath.class/instance/containsPoint..st: -------------------------------------------------------------------------------- 1 | accessing 2 | containsPoint: aPoint 3 | ^self containsPoint: aPoint withTransform: MatrixTransform2x3 identity -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPath.class/instance/containsPoint.withTransform..st: -------------------------------------------------------------------------------- 1 | accessing 2 | containsPoint: aPoint withTransform: aTransform 3 | ^self containsPoint: aPoint withTransform: aTransform stroke: self stroke -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPath.class/instance/drawOn..st: -------------------------------------------------------------------------------- 1 | drawing 2 | drawOn: aCanvas 3 | aCanvas drawPath: self. 4 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPath.class/instance/endTangentTransform.st: -------------------------------------------------------------------------------- 1 | accessing 2 | endTangentTransform 3 | "Return a transform which rotates along the end tangent and move to the end." 4 | | triplet direction | 5 | triplet := self points first last: 3. 6 | direction := (triplet third = triplet first 7 | ifTrue: [1@0] 8 | ifFalse: [triplet third - triplet first]) normalized. 9 | 10 | ^ MatrixTransform2x3 new 11 | a11: direction x; a12: direction y negated; a13: triplet last x; 12 | a21: direction y; a22: direction x; a23: triplet last y. -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPath.class/instance/fill.st: -------------------------------------------------------------------------------- 1 | accessing 2 | fill 3 | ^nil 4 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPath.class/instance/floats..st: -------------------------------------------------------------------------------- 1 | accessing 2 | floats: anArray 3 | floats := anArray asFloatArray. 4 | floats size \\ 6 = 0 ifFalse: [self error: 'invalid path']. 5 | points := nil. 6 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPath.class/instance/floats.st: -------------------------------------------------------------------------------- 1 | accessing 2 | floats 3 | ^floats ifNil: [ 4 | floats := FloatArray streamContents: [:path | 5 | points do: [:contour | 6 | contour size \\ 3 = 0 ifFalse: [self error: 'invalid path']. 7 | contour do: [:p | 8 | path nextPut: p x; nextPut: p y]]]] -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPath.class/instance/isClosed.st: -------------------------------------------------------------------------------- 1 | testing 2 | isClosed 3 | | s first last | 4 | s := self floats size. 5 | first := (floats at: 1) @ (floats at: 2). 6 | last := (floats at: s-1) @ (floats at: s). 7 | ^first = last -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPath.class/instance/isRectangularSeriesFrom.equalsTo..st: -------------------------------------------------------------------------------- 1 | testing 2 | isRectangularSeriesFrom: index equalsTo: v 3 | 4 | floats size = 24 ifFalse: [^ false]. 5 | 0 to: 10 do: [:i | 6 | (floats atWrap: (index + i)) = v ifFalse: [^ false]]. 7 | ^ true 8 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPath.class/instance/minMax.st: -------------------------------------------------------------------------------- 1 | accessing 2 | minMax 3 | | p min max | 4 | min := max := nil. 5 | self floats pairsDo: [:x :y | 6 | p := x@y. 7 | min := min ifNil: [p] ifNotNil: [min min: p]. 8 | max := max ifNil: [p] ifNotNil: [max max: p]]. 9 | ^min corner: max -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPath.class/instance/minMaxWithTransform..st: -------------------------------------------------------------------------------- 1 | accessing 2 | minMaxWithTransform: aTransform 3 | | p min max | 4 | min := max := nil. 5 | self floats pairsDo: [:x :y | 6 | p := aTransform transformPoint: x@y. 7 | min := min ifNil: [p] ifNotNil: [min min: p]. 8 | max := max ifNil: [p] ifNotNil: [max max: p]]. 9 | min ifNil: [min := 0.0@0.0]. 10 | max ifNil: [max := 0.0@0.0]. 11 | ^min corner: max -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPath.class/instance/points..st: -------------------------------------------------------------------------------- 1 | accessing 2 | points: anArrayOfContours 3 | points := anArrayOfContours. 4 | floats := nil. -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPath.class/instance/points.st: -------------------------------------------------------------------------------- 1 | accessing 2 | points 3 | ^points ifNil: [ 4 | points := {floats pairsCollect: [:x :y | x@y]}] -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPath.class/instance/size.st: -------------------------------------------------------------------------------- 1 | converting 2 | size 3 | ^self floats size -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPath.class/instance/startTangentTransform.st: -------------------------------------------------------------------------------- 1 | accessing 2 | startTangentTransform 3 | "Return a transform which rotates along the start tangent and move to the start." 4 | | triplet direction p | 5 | triplet := self points first first: 3. 6 | p := triplet first = triplet second 7 | ifTrue: [triplet third] 8 | ifFalse: [triplet second]. 9 | direction := (triplet first = p 10 | ifTrue: [1@0] 11 | ifFalse: [triplet first - p]) normalized. 12 | ^ MatrixTransform2x3 new 13 | a11: direction x; a12: direction y negated; a13: triplet first x; 14 | a21: direction y; a22: direction x; a23: triplet first y. -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPath.class/instance/stroke.st: -------------------------------------------------------------------------------- 1 | accessing 2 | stroke 3 | ^nil 4 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPath.class/instance/transformedBy..st: -------------------------------------------------------------------------------- 1 | converting 2 | transformedBy: aTransform 3 | ^ self class new 4 | points: (self points 5 | collect: [:ps | ps asArray 6 | collect: [:p | aTransform transformPointNoRound: p]]) -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPath.class/instance/withFill.stroke.strokeColor..st: -------------------------------------------------------------------------------- 1 | converting 2 | withFill: fillColor stroke: stroke strokeColor: strokeColor 3 | "Return a collection of GeziraFillPath or 4 | GeziraStrokePath that have given color and border" 5 | | paths | 6 | paths := OrderedCollection new. 7 | fillColor isTransparent 8 | ifFalse: [paths 9 | add: ((GeziraFilledPath path: self) withClosedContours fill: fillColor)]. 10 | stroke 11 | ifNotNil: [(stroke width > 0 12 | and: [strokeColor isTransparent not]) 13 | ifTrue: [paths add: ((GeziraStrokedPath path: self) fill: strokeColor; 14 | stroke: stroke)]]. 15 | ^ paths -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPath.class/properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "category" : "GeziraBindings-Base", 3 | "classinstvars" : [ 4 | ], 5 | "classvars" : [ 6 | ], 7 | "commentStamp" : "bf 2/18/2010 21:45", 8 | "instvars" : [ 9 | "floats", 10 | "points" ], 11 | "name" : "GeziraPath", 12 | "pools" : [ 13 | ], 14 | "super" : "Object", 15 | "type" : "normal" } 16 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPathBuilder.class/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/damelang/gezira/9f3e6846f4a1732c344a3b99e5d670deac618b17/bindings/squeak/GeziraBindings-Base.MT.package/GeziraPathBuilder.class/README.md -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPathBuilder.class/instance/close.st: -------------------------------------------------------------------------------- 1 | building 2 | close 3 | "Add a line from current position to first point" 4 | pos = (floats first @ floats second) ifFalse: [ 5 | self vertex: 0; vertex: 0. 6 | stream nextPut: floats first; nextPut: floats second]. -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPathBuilder.class/instance/count.st: -------------------------------------------------------------------------------- 1 | private 2 | count 3 | 4 | ^ stream contents size. 5 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPathBuilder.class/instance/floats.st: -------------------------------------------------------------------------------- 1 | building 2 | floats 3 | ^stream contents -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPathBuilder.class/instance/left..st: -------------------------------------------------------------------------------- 1 | building 2 | left: radius 3 | "Turn left with given radius, sharp turn if 0" 4 | radius > 0 ifTrue: [ 5 | self vertex: 0; vertex: radius. 6 | dir := dir y @ dir x negated. 7 | self vertex: radius. 8 | ] ifFalse: [ 9 | dir := dir y @ dir x negated. 10 | ] -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPathBuilder.class/instance/line..st: -------------------------------------------------------------------------------- 1 | building 2 | line: length 3 | "append straight line segment of given length" 4 | length > 0 ifTrue: [self vertex: 0; vertex: 0; vertex: length]. 5 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPathBuilder.class/instance/pos.dir..st: -------------------------------------------------------------------------------- 1 | initialization 2 | pos: position dir: direction 3 | pos := position. 4 | dir := direction. 5 | floats := FloatArray new: 96. 6 | stream := floats writeStream. -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPathBuilder.class/instance/right..st: -------------------------------------------------------------------------------- 1 | building 2 | right: radius 3 | "Turn right with given radius, sharp turn if 0" 4 | radius > 0 ifTrue: [ 5 | self vertex: 0; vertex: radius. 6 | dir := dir y negated @ dir x. 7 | self vertex: radius. 8 | ] ifFalse: [ 9 | dir := dir y negated @ dir x 10 | ] -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPathBuilder.class/instance/turn..st: -------------------------------------------------------------------------------- 1 | building 2 | turn: radian 3 | dir := dir rotateBy: radian about: 0@0 -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPathBuilder.class/instance/vertex..st: -------------------------------------------------------------------------------- 1 | private 2 | vertex: distance 3 | pos := pos + (dir * distance). 4 | stream nextPut: pos x; nextPut: pos y. 5 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPathBuilder.class/methodProperties.json: -------------------------------------------------------------------------------- 1 | { 2 | "class" : { 3 | }, 4 | "instance" : { 5 | "close" : "bf 10/18/2010 12:53", 6 | "count" : "yo 10/26/2010 23:19", 7 | "floats" : "bf 10/7/2010 16:51", 8 | "left:" : "bf 10/7/2010 16:28", 9 | "line:" : "bf 10/18/2010 12:39", 10 | "pos:dir:" : "bf 10/7/2010 16:47", 11 | "right:" : "bf 10/7/2010 16:28", 12 | "turn:" : "yo 6/6/2012 09:36", 13 | "vertex:" : "bf 10/7/2010 16:44" } } 14 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraPathBuilder.class/properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "category" : "GeziraBindings-Base", 3 | "classinstvars" : [ 4 | ], 5 | "classvars" : [ 6 | ], 7 | "commentStamp" : "", 8 | "instvars" : [ 9 | "floats", 10 | "stream", 11 | "pos", 12 | "dir" ], 13 | "name" : "GeziraPathBuilder", 14 | "pools" : [ 15 | ], 16 | "super" : "Object", 17 | "type" : "normal" } 18 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraShadowCanvas.class/README.md: -------------------------------------------------------------------------------- 1 | I ignore regular fill: messages. To change my fill use #shadowFill: -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraShadowCanvas.class/instance/fill..st: -------------------------------------------------------------------------------- 1 | accessing 2 | fill: aGeziraFill 3 | "ignore" -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraShadowCanvas.class/instance/isShadowCanvas.st: -------------------------------------------------------------------------------- 1 | testing 2 | isShadowCanvas 3 | ^true -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraShadowCanvas.class/instance/shadowFill..st: -------------------------------------------------------------------------------- 1 | accessing 2 | shadowFill: aGeziraFill 3 | fill := aGeziraFill asGeziraFill. -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraShadowCanvas.class/methodProperties.json: -------------------------------------------------------------------------------- 1 | { 2 | "class" : { 3 | }, 4 | "instance" : { 5 | "fill:" : "bf 9/23/2010 15:19", 6 | "isShadowCanvas" : "bf 9/23/2010 14:15", 7 | "shadowFill:" : "bf 10/8/2010 15:08" } } 8 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraShadowCanvas.class/properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "category" : "GeziraBindings-Base", 3 | "classinstvars" : [ 4 | ], 5 | "classvars" : [ 6 | ], 7 | "commentStamp" : "bf 9/23/2010 14:14", 8 | "instvars" : [ 9 | ], 10 | "name" : "GeziraShadowCanvas", 11 | "pools" : [ 12 | ], 13 | "super" : "GeziraCanvas", 14 | "type" : "normal" } 15 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraStroke.class/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/damelang/gezira/9f3e6846f4a1732c344a3b99e5d670deac618b17/bindings/squeak/GeziraBindings-Base.MT.package/GeziraStroke.class/README.md -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraStroke.class/class/miter..st: -------------------------------------------------------------------------------- 1 | joints and caps 2 | miter: lNumber 3 | ^ GeziraStrokeMiter new 4 | limit: lNumber -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraStroke.class/class/miter.st: -------------------------------------------------------------------------------- 1 | joints and caps 2 | miter 3 | "default miter style" 4 | ^ self miter: 4 5 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraStroke.class/class/miterLimit.distance..st: -------------------------------------------------------------------------------- 1 | old bindings 2 | miterLimit: limit distance: dist 3 | Transcript show: 'Need to remove ', thisContext selector, ' send in ', thisContext sender method asString; cr. 4 | ^self miter: limit -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraStroke.class/class/round..st: -------------------------------------------------------------------------------- 1 | instance creation 2 | round: aNumber 3 | ^ self width: aNumber joints: self round caps: self round 4 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraStroke.class/class/round.st: -------------------------------------------------------------------------------- 1 | joints and caps 2 | round 3 | ^ GeziraStrokeRound new -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraStroke.class/class/width..st: -------------------------------------------------------------------------------- 1 | instance creation 2 | width: aNumber 3 | "default stroke uses miter joints and butted caps" 4 | ^ self width: aNumber joints: self miter caps: (self miter: 0.0) 5 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraStroke.class/class/width.joints.caps..st: -------------------------------------------------------------------------------- 1 | instance creation 2 | width: aNumber joints: jMiterOrRound caps: cMiterOrRound 3 | ^ self new 4 | width: aNumber; 5 | joints: jMiterOrRound; 6 | caps: cMiterOrRound -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraStroke.class/instance/caps..st: -------------------------------------------------------------------------------- 1 | accessing 2 | caps: miterOrRound 3 | caps := miterOrRound -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraStroke.class/instance/caps.st: -------------------------------------------------------------------------------- 1 | accessing 2 | caps 3 | ^ caps -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraStroke.class/instance/joints..st: -------------------------------------------------------------------------------- 1 | accessing 2 | joints: miterOrRound 3 | joints := miterOrRound -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraStroke.class/instance/joints.st: -------------------------------------------------------------------------------- 1 | accessing 2 | joints 3 | ^ joints -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraStroke.class/instance/strokePipelineOn..st: -------------------------------------------------------------------------------- 1 | rendering 2 | strokePipelineOn: g 3 | ^{g strokeBezierPathW: width l: joints limit c: caps limit} 4 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraStroke.class/instance/width..st: -------------------------------------------------------------------------------- 1 | accessing 2 | width: aNumber 3 | width := aNumber -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraStroke.class/instance/width.st: -------------------------------------------------------------------------------- 1 | accessing 2 | width 3 | ^ width -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraStroke.class/methodProperties.json: -------------------------------------------------------------------------------- 1 | { 2 | "class" : { 3 | "miter" : "bf 5/31/2011 19:35", 4 | "miter:" : "bf 5/31/2011 21:33", 5 | "miterLimit:distance:" : "tk 11/15/2011 10:48", 6 | "round" : "bf 8/20/2010 15:16", 7 | "round:" : "bf 8/31/2010 16:55", 8 | "width:" : "bf 11/28/2011 20:30", 9 | "width:joints:caps:" : "bf 8/20/2010 15:28" }, 10 | "instance" : { 11 | "caps" : "bf 8/20/2010 15:14", 12 | "caps:" : "bf 8/20/2010 15:14", 13 | "joints" : "bf 8/20/2010 15:15", 14 | "joints:" : "bf 8/20/2010 15:14", 15 | "strokePipelineOn:" : "bf 10/17/2011 19:12", 16 | "width" : "bf 8/20/2010 15:14", 17 | "width:" : "bf 8/20/2010 15:14" } } 18 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraStroke.class/properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "category" : "GeziraBindings-Base", 3 | "classinstvars" : [ 4 | ], 5 | "classvars" : [ 6 | ], 7 | "commentStamp" : "", 8 | "instvars" : [ 9 | "width", 10 | "joints", 11 | "caps" ], 12 | "name" : "GeziraStroke", 13 | "pools" : [ 14 | ], 15 | "super" : "Object", 16 | "type" : "normal" } 17 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraStrokeMiter.class/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/damelang/gezira/9f3e6846f4a1732c344a3b99e5d670deac618b17/bindings/squeak/GeziraBindings-Base.MT.package/GeziraStrokeMiter.class/README.md -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraStrokeMiter.class/instance/limit..st: -------------------------------------------------------------------------------- 1 | accessing 2 | limit: aNumber 3 | limit := aNumber 4 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraStrokeMiter.class/instance/limit.st: -------------------------------------------------------------------------------- 1 | accessing 2 | limit 3 | ^limit 4 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraStrokeMiter.class/methodProperties.json: -------------------------------------------------------------------------------- 1 | { 2 | "class" : { 3 | }, 4 | "instance" : { 5 | "limit" : "bf 8/20/2010 15:06", 6 | "limit:" : "bf 8/20/2010 15:06" } } 7 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraStrokeMiter.class/properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "category" : "GeziraBindings-Base", 3 | "classinstvars" : [ 4 | ], 5 | "classvars" : [ 6 | ], 7 | "commentStamp" : "", 8 | "instvars" : [ 9 | "limit", 10 | "distance" ], 11 | "name" : "GeziraStrokeMiter", 12 | "pools" : [ 13 | ], 14 | "super" : "Object", 15 | "type" : "normal" } 16 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraStrokeRound.class/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/damelang/gezira/9f3e6846f4a1732c344a3b99e5d670deac618b17/bindings/squeak/GeziraBindings-Base.MT.package/GeziraStrokeRound.class/README.md -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraStrokeRound.class/instance/limit.st: -------------------------------------------------------------------------------- 1 | accessing 2 | limit 3 | ^-1.0 -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraStrokeRound.class/methodProperties.json: -------------------------------------------------------------------------------- 1 | { 2 | "class" : { 3 | }, 4 | "instance" : { 5 | "limit" : "bf 5/31/2011 19:39" } } 6 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraStrokeRound.class/properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "category" : "GeziraBindings-Base", 3 | "classinstvars" : [ 4 | ], 5 | "classvars" : [ 6 | ], 7 | "commentStamp" : "", 8 | "instvars" : [ 9 | ], 10 | "name" : "GeziraStrokeRound", 11 | "pools" : [ 12 | ], 13 | "super" : "Object", 14 | "type" : "normal" } 15 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraStrokedPath.class/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/damelang/gezira/9f3e6846f4a1732c344a3b99e5d670deac618b17/bindings/squeak/GeziraBindings-Base.MT.package/GeziraStrokedPath.class/README.md -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraStrokedPath.class/instance/boundsWithTransform.stroke..st: -------------------------------------------------------------------------------- 1 | accessing 2 | boundsWithTransform: transform stroke: aStroke 3 | ^super boundsWithTransform: transform 4 | stroke: (stroke ifNotNil: [stroke] ifNil: [aStroke]) -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraStrokedPath.class/instance/containsPoint.withTransform.stroke..st: -------------------------------------------------------------------------------- 1 | accessing 2 | containsPoint: aPoint withTransform: aTransform stroke: aStroke 3 | ^super containsPoint: aPoint 4 | withTransform: aTransform 5 | stroke: (stroke ifNotNil: [stroke] ifNil: [aStroke]) -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraStrokedPath.class/instance/drawOn..st: -------------------------------------------------------------------------------- 1 | drawing 2 | drawOn: aCanvas 3 | stroke ifNotNil: [aCanvas stroke: stroke]. 4 | super drawOn: aCanvas -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraStrokedPath.class/instance/stroke..st: -------------------------------------------------------------------------------- 1 | accessing 2 | stroke: aStroke 3 | stroke := aStroke -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraStrokedPath.class/instance/stroke.st: -------------------------------------------------------------------------------- 1 | accessing 2 | stroke 3 | ^stroke -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraStrokedPath.class/instance/transformedBy..st: -------------------------------------------------------------------------------- 1 | converting 2 | transformedBy: aTransform 3 | | path | 4 | path := super transformedBy: aTransform. 5 | path stroke: stroke. 6 | ^ path. 7 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraStrokedPath.class/methodProperties.json: -------------------------------------------------------------------------------- 1 | { 2 | "class" : { 3 | }, 4 | "instance" : { 5 | "boundsWithTransform:stroke:" : "bf 10/11/2010 18:30", 6 | "containsPoint:withTransform:stroke:" : "bf 10/11/2010 18:29", 7 | "drawOn:" : "bf 9/30/2010 17:48", 8 | "stroke" : "bf 8/31/2010 21:34", 9 | "stroke:" : "bf 8/31/2010 21:34", 10 | "transformedBy:" : "tak 9/2/2011 14:28" } } 11 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/GeziraStrokedPath.class/properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "category" : "GeziraBindings-Base", 3 | "classinstvars" : [ 4 | ], 5 | "classvars" : [ 6 | ], 7 | "commentStamp" : "", 8 | "instvars" : [ 9 | "stroke" ], 10 | "name" : "GeziraStrokedPath", 11 | "pools" : [ 12 | ], 13 | "super" : "GeziraFilledPath", 14 | "type" : "normal" } 15 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/MatrixTransform2x3.extension/instance/isAxisAligning.st: -------------------------------------------------------------------------------- 1 | *gezirabindings-base 2 | isAxisAligning 3 | "Return true if a transformed rectangle will still be axis-aligned, i.e. translated, scaled, and/or rotated by multiples of 90 degrees" 4 | ^(self a12 = 0.0 and: [self a21 = 0.0]) 5 | or: [self a11 = 0.0 and: [self a22 = 0.0]] -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/MatrixTransform2x3.extension/instance/localBounds.toGlobalNoRound..st: -------------------------------------------------------------------------------- 1 | *gezirabindings-base 2 | localBounds: srcRect toGlobalNoRound: dstRect 3 | "Transform aRectangle from local coordinates into the coordinates of its container. Answer is NOT in truly global coordinates. " 4 | 5 | 6 | ^super localBoundsToGlobal: srcRect -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/MatrixTransform2x3.extension/instance/localBoundsToGlobalNoRound..st: -------------------------------------------------------------------------------- 1 | *gezirabindings-base 2 | localBoundsToGlobalNoRound: aRectangle 3 | "Transform aRectangle from local coordinates into the coordinates of its container. Answer is NOT in truly global coordinates. " 4 | 5 | ^self localBounds: aRectangle toGlobalNoRound: Rectangle new -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/MatrixTransform2x3.extension/instance/transformPointNoRound..st: -------------------------------------------------------------------------------- 1 | *gezirabindings-base 2 | transformPointNoRound: aPoint 3 | "Transform aPoint from local coordinates into global coordinates" 4 | 5 | | x y | 6 | x := (aPoint x * self a11) + (aPoint y * self a12) + self a13. 7 | y := (aPoint x * self a21) + (aPoint y * self a22) + self a23. 8 | ^x @ y 9 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/MatrixTransform2x3.extension/methodProperties.json: -------------------------------------------------------------------------------- 1 | { 2 | "class" : { 3 | }, 4 | "instance" : { 5 | "isAxisAligning" : "bf 12/13/2011 13:28", 6 | "localBounds:toGlobalNoRound:" : "bf 11/22/2011 18:41", 7 | "localBoundsToGlobalNoRound:" : "tk 2/4/2011 11:21", 8 | "transformPointNoRound:" : "bf 11/22/2011 18:41" } } 9 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/MatrixTransform2x3.extension/properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "MatrixTransform2x3" } 3 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/Rectangle.extension/instance/asGeziraPath.st: -------------------------------------------------------------------------------- 1 | *gezirabindings-base 2 | asGeziraPath 3 | ^GeziraPath new floats: { 4 | origin x. origin y. origin x. origin y. corner x. origin y. 5 | corner x. origin y. corner x. origin y. corner x. corner y. 6 | corner x. corner y. corner x. corner y. origin x. corner y. 7 | origin x. corner y. origin x. corner y. origin x. origin y} -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/Rectangle.extension/instance/clippedBy..st: -------------------------------------------------------------------------------- 1 | *gezirabindings-base 2 | clippedBy: aRectangle 3 | "Like intersect: but ensures non-negative extent" 4 | | aPoint left right top bottom | 5 | aPoint := aRectangle origin. 6 | aPoint x > origin x ifTrue:[left := aPoint x] ifFalse:[left := origin x]. 7 | aPoint y > origin y ifTrue:[top := aPoint y] ifFalse:[top := origin y]. 8 | aPoint := aRectangle corner. 9 | aPoint x < corner x ifTrue:[right := aPoint x] ifFalse:[right := corner x]. 10 | aPoint y < corner y ifTrue:[bottom := aPoint y] ifFalse:[bottom := corner y]. 11 | right < left ifTrue: [right := left]. 12 | bottom < top ifTrue: [bottom := top]. 13 | ^Rectangle 14 | origin: (left@top) 15 | corner: (right max: left)@(bottom max: top) 16 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/Rectangle.extension/methodProperties.json: -------------------------------------------------------------------------------- 1 | { 2 | "class" : { 3 | }, 4 | "instance" : { 5 | "asGeziraPath" : "bf 8/27/2010 00:42", 6 | "clippedBy:" : "bf 9/14/2011 15:07" } } 7 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/Rectangle.extension/properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Rectangle" } 3 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/TTGlyph.extension/instance/asGeziraPath.st: -------------------------------------------------------------------------------- 1 | *gezirabindings-base 2 | asGeziraPath 3 | self buildAllContours. 4 | ^GeziraPath new points: self contours -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/TTGlyph.extension/methodProperties.json: -------------------------------------------------------------------------------- 1 | { 2 | "class" : { 3 | }, 4 | "instance" : { 5 | "asGeziraPath" : "tak 5/9/2011 14:58" } } 6 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/TTGlyph.extension/properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "TTGlyph" } 3 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/monticello.meta/categories.st: -------------------------------------------------------------------------------- 1 | SystemOrganization addCategory: #'GeziraBindings-Base'! 2 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/monticello.meta/initializers.st: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/damelang/gezira/9f3e6846f4a1732c344a3b99e5d670deac618b17/bindings/squeak/GeziraBindings-Base.MT.package/monticello.meta/initializers.st -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/monticello.meta/package: -------------------------------------------------------------------------------- 1 | (name 'GeziraBindings-Base') -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindings-Base.MT.package/properties.json: -------------------------------------------------------------------------------- 1 | { 2 | } 3 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/.filetree: -------------------------------------------------------------------------------- 1 | { 2 | "noMethodMetaData" : true, 3 | "separateMethodMetaAndSource" : false, 4 | "useCypressPropertiesFile" : true } 5 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/class/declareCVarsIn..st: -------------------------------------------------------------------------------- 1 | translation 2 | declareCVarsIn: cg 3 | super declareCVarsIn: cg. 4 | 5 | cg addHeaderFile: '"gezira.h"'. 6 | cg addHeaderFile: '"gezira-image.h"'. 7 | cg addHeaderFile: ''. 8 | 9 | cg var: #init type: #'nile_Process_t*'. 10 | cg var: #mem type: #'char*'. 11 | cg var: #stack declareC: #'nile_Process_t* stack[100]'. 12 | cg var: #stackP type: #int. 13 | cg var: #images declareC: #'gezira_Image_t images[100]'. 14 | cg var: #errorMsg type: #'char*'. 15 | 16 | cg var: #m23ResultX type: #double. 17 | cg var: #m23ResultY type: #double. 18 | cg var: #m23ArgX type: #double. 19 | cg var: #m23ArgY type: #double -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/class/initialize.st: -------------------------------------------------------------------------------- 1 | class initialization 2 | initialize 3 | NileBufferSize := 5000000. 4 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/class/moduleName.st: -------------------------------------------------------------------------------- 1 | translation 2 | moduleName 3 | ^'GeziraBindingsMT' -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/class/moduleNameAndVersion.st: -------------------------------------------------------------------------------- 1 | translation 2 | moduleNameAndVersion 3 | "Answer the receiver's module name and version info that is used for the plugin's C code. The default is to append the code generation date, but any useful text is ok (keep it short)" 4 | 5 | ^ self moduleName, ' ', self version, ' ', Date today asString -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/class/version.st: -------------------------------------------------------------------------------- 1 | translation 2 | version 3 | | pkg wc version | 4 | pkg := PackageOrganizer default packageOfClass: self. 5 | wc := (MCPackage named: pkg packageName) workingCopy. 6 | version := wc ancestors first name copyAfterLast: $-. 7 | wc modified ifTrue: [version := version, '*']. 8 | ^version -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/checkNileError.st: -------------------------------------------------------------------------------- 1 | misc 2 | checkNileError 3 | errorCode := self cCode: 'nile_status(init)'. 4 | errorCode ~= (self cCode: 'NILE_STATUS_OK') ifTrue: [ 5 | self fail: 'nile error']. 6 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/executeKernel.size..st: -------------------------------------------------------------------------------- 1 | commands 2 | executeKernel: argOops size: argCount 3 | "A kernel command looks like #('KernelName' arg1 arg2). Dispatch on the name." 4 | 5 | | kernelNameOop kernelName kernelNameSize | 6 | self returnTypeC: 'void'. 7 | self var: #argOops type: 'sqInt*'. 8 | self var: #kernelName type: 'char*'. 9 | 10 | argCount < 1 11 | ifTrue: [^self fail: 'No kernel name given']. 12 | 13 | kernelNameOop := argOops at: 0. 14 | (interpreterProxy isBytes: kernelNameOop) 15 | ifFalse: [^self fail: 'kernel name not a String']. 16 | kernelName := interpreterProxy firstIndexableField: kernelNameOop. 17 | kernelNameSize := interpreterProxy slotSizeOf: kernelNameOop. 18 | 19 | self dispatchKernel: kernelName size: kernelNameSize arguments: argOops + 1 size: argCount - 1. -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/executeSync.size..st: -------------------------------------------------------------------------------- 1 | commands 2 | executeSync: argOops size: argCount 3 | self returnTypeC: 'void'. 4 | self var: #argOops type: 'sqInt*'. 5 | self cCode: 'nile_sync(init)'. 6 | errorCode := self cCode: 'nile_status(init)'. 7 | errorCode ~= (self cCode: 'NILE_STATUS_OK') ifTrue: [^self fail: 'sync failed']. 8 | self reset. 9 | wasSync := true. 10 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/fail..st: -------------------------------------------------------------------------------- 1 | misc 2 | fail: aString 3 | self var: #aString type: 'char*'. 4 | self msg: aString. 5 | errorMsg := aString. 6 | interpreterProxy success: false. 7 | ^nil -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/initialiseModule.st: -------------------------------------------------------------------------------- 1 | initialize-release 2 | initialiseModule 3 | self export: true. 4 | memSize := 0. 5 | mem := nil. 6 | threads := 0. 7 | init := nil. 8 | 0 to: images sizeof / (images at: 0) sizeof - 1 do: [:i | 9 | self cCode: 'images[i].pixels = NULL']. 10 | self reset. 11 | ^true -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelApplyColorSpans.size..st: -------------------------------------------------------------------------------- 1 | generated 2 | kernelApplyColorSpans: argOops size: argCount 3 | "Automatically generated (see generatePluginKernels)" 4 | | result spans | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | self var: #spans type: 'nile_Process_t*'. 9 | argCount ~= 0 10 | ifTrue: [^self fail: 'wrong argument count in ApplyColorSpans']. 11 | spans := self popKernel. 12 | interpreterProxy failed ifTrue: [^self fail: 'wrong arguments to ApplyColorSpans']. 13 | result := self cCode: 'gezira_ApplyColorSpans(init, spans)'. 14 | self pushKernel: result. 15 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelApplyTexture.size..st: -------------------------------------------------------------------------------- 1 | generated 2 | kernelApplyTexture: argOops size: argCount 3 | "Automatically generated (see generatePluginKernels)" 4 | | result t | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | self var: #t type: 'nile_Process_t*'. 9 | argCount ~= 0 10 | ifTrue: [^self fail: 'wrong argument count in ApplyTexture']. 11 | t := self popKernel. 12 | interpreterProxy failed ifTrue: [^self fail: 'wrong arguments to ApplyTexture']. 13 | result := self cCode: 'gezira_ApplyTexture(init, t)'. 14 | self pushKernel: result. 15 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelBicubicFilter.size..st: -------------------------------------------------------------------------------- 1 | generated 2 | kernelBicubicFilter: argOops size: argCount 3 | "Automatically generated (see generatePluginKernels)" 4 | | result t | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | self var: #t type: 'nile_Process_t*'. 9 | argCount ~= 0 10 | ifTrue: [^self fail: 'wrong argument count in BicubicFilter']. 11 | t := self popKernel. 12 | interpreterProxy failed ifTrue: [^self fail: 'wrong arguments to BicubicFilter']. 13 | result := self cCode: 'gezira_BicubicFilter(init, t)'. 14 | self pushKernel: result. 15 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelBilinearFilter.size..st: -------------------------------------------------------------------------------- 1 | generated 2 | kernelBilinearFilter: argOops size: argCount 3 | "Automatically generated (see generatePluginKernels)" 4 | | result t | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | self var: #t type: 'nile_Process_t*'. 9 | argCount ~= 0 10 | ifTrue: [^self fail: 'wrong argument count in BilinearFilter']. 11 | t := self popKernel. 12 | interpreterProxy failed ifTrue: [^self fail: 'wrong arguments to BilinearFilter']. 13 | result := self cCode: 'gezira_BilinearFilter(init, t)'. 14 | self pushKernel: result. 15 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelCalculateBounds.size..st: -------------------------------------------------------------------------------- 1 | generated 2 | kernelCalculateBounds: argOops size: argCount 3 | "Automatically generated (see generatePluginKernels)" 4 | | result | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | argCount ~= 0 9 | ifTrue: [^self fail: 'wrong argument count in CalculateBounds']. 10 | result := self cCode: 'gezira_CalculateBounds(init)'. 11 | self pushKernel: result. 12 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelCapture.size..st: -------------------------------------------------------------------------------- 1 | commands 2 | kernelCapture: argOops size: argCount 3 | "Argument is a FloatArray" 4 | | arrayOop array n arraySize result | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | self var: #array type: 'float*'. 9 | self var: #n type: 'static int'. 10 | 11 | argCount ~= 1 12 | ifTrue: [^self fail: 'wrong kernel argument count in Capture']. 13 | 14 | arrayOop := argOops at: 0. 15 | 16 | array := interpreterProxy arrayValueOf: arrayOop. 17 | interpreterProxy failed ifTrue: [^self fail: 'invalid array']. 18 | arraySize := interpreterProxy slotSizeOf: arrayOop. 19 | n := 0. 20 | result := self cCode: 'nile_Capture (init, array, &n, arraySize)' 21 | inSmalltalk: [array. arraySize. n]. 22 | self pushKernel: result. 23 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelCompositeClear.size..st: -------------------------------------------------------------------------------- 1 | generated 2 | kernelCompositeClear: argOops size: argCount 3 | "Automatically generated (see generatePluginKernels)" 4 | | result | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | argCount ~= 0 9 | ifTrue: [^self fail: 'wrong argument count in CompositeClear']. 10 | result := self cCode: 'gezira_CompositeClear(init)'. 11 | self pushKernel: result. 12 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelCompositeColorBurn.size..st: -------------------------------------------------------------------------------- 1 | generated 2 | kernelCompositeColorBurn: argOops size: argCount 3 | "Automatically generated (see generatePluginKernels)" 4 | | result | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | argCount ~= 0 9 | ifTrue: [^self fail: 'wrong argument count in CompositeColorBurn']. 10 | result := self cCode: 'gezira_CompositeColorBurn(init)'. 11 | self pushKernel: result. 12 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelCompositeColorDodge.size..st: -------------------------------------------------------------------------------- 1 | generated 2 | kernelCompositeColorDodge: argOops size: argCount 3 | "Automatically generated (see generatePluginKernels)" 4 | | result | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | argCount ~= 0 9 | ifTrue: [^self fail: 'wrong argument count in CompositeColorDodge']. 10 | result := self cCode: 'gezira_CompositeColorDodge(init)'. 11 | self pushKernel: result. 12 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelCompositeDarken.size..st: -------------------------------------------------------------------------------- 1 | generated 2 | kernelCompositeDarken: argOops size: argCount 3 | "Automatically generated (see generatePluginKernels)" 4 | | result | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | argCount ~= 0 9 | ifTrue: [^self fail: 'wrong argument count in CompositeDarken']. 10 | result := self cCode: 'gezira_CompositeDarken(init)'. 11 | self pushKernel: result. 12 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelCompositeDifference.size..st: -------------------------------------------------------------------------------- 1 | generated 2 | kernelCompositeDifference: argOops size: argCount 3 | "Automatically generated (see generatePluginKernels)" 4 | | result | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | argCount ~= 0 9 | ifTrue: [^self fail: 'wrong argument count in CompositeDifference']. 10 | result := self cCode: 'gezira_CompositeDifference(init)'. 11 | self pushKernel: result. 12 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelCompositeDst.size..st: -------------------------------------------------------------------------------- 1 | generated 2 | kernelCompositeDst: argOops size: argCount 3 | "Automatically generated (see generatePluginKernels)" 4 | | result | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | argCount ~= 0 9 | ifTrue: [^self fail: 'wrong argument count in CompositeDst']. 10 | result := self cCode: 'gezira_CompositeDst(init)'. 11 | self pushKernel: result. 12 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelCompositeDstAtop.size..st: -------------------------------------------------------------------------------- 1 | generated 2 | kernelCompositeDstAtop: argOops size: argCount 3 | "Automatically generated (see generatePluginKernels)" 4 | | result | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | argCount ~= 0 9 | ifTrue: [^self fail: 'wrong argument count in CompositeDstAtop']. 10 | result := self cCode: 'gezira_CompositeDstAtop(init)'. 11 | self pushKernel: result. 12 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelCompositeDstIn.size..st: -------------------------------------------------------------------------------- 1 | generated 2 | kernelCompositeDstIn: argOops size: argCount 3 | "Automatically generated (see generatePluginKernels)" 4 | | result | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | argCount ~= 0 9 | ifTrue: [^self fail: 'wrong argument count in CompositeDstIn']. 10 | result := self cCode: 'gezira_CompositeDstIn(init)'. 11 | self pushKernel: result. 12 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelCompositeDstOut.size..st: -------------------------------------------------------------------------------- 1 | generated 2 | kernelCompositeDstOut: argOops size: argCount 3 | "Automatically generated (see generatePluginKernels)" 4 | | result | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | argCount ~= 0 9 | ifTrue: [^self fail: 'wrong argument count in CompositeDstOut']. 10 | result := self cCode: 'gezira_CompositeDstOut(init)'. 11 | self pushKernel: result. 12 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelCompositeDstOver.size..st: -------------------------------------------------------------------------------- 1 | generated 2 | kernelCompositeDstOver: argOops size: argCount 3 | "Automatically generated (see generatePluginKernels)" 4 | | result | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | argCount ~= 0 9 | ifTrue: [^self fail: 'wrong argument count in CompositeDstOver']. 10 | result := self cCode: 'gezira_CompositeDstOver(init)'. 11 | self pushKernel: result. 12 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelCompositeExclusion.size..st: -------------------------------------------------------------------------------- 1 | generated 2 | kernelCompositeExclusion: argOops size: argCount 3 | "Automatically generated (see generatePluginKernels)" 4 | | result | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | argCount ~= 0 9 | ifTrue: [^self fail: 'wrong argument count in CompositeExclusion']. 10 | result := self cCode: 'gezira_CompositeExclusion(init)'. 11 | self pushKernel: result. 12 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelCompositeHardLight.size..st: -------------------------------------------------------------------------------- 1 | generated 2 | kernelCompositeHardLight: argOops size: argCount 3 | "Automatically generated (see generatePluginKernels)" 4 | | result | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | argCount ~= 0 9 | ifTrue: [^self fail: 'wrong argument count in CompositeHardLight']. 10 | result := self cCode: 'gezira_CompositeHardLight(init)'. 11 | self pushKernel: result. 12 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelCompositeInvert.size..st: -------------------------------------------------------------------------------- 1 | generated 2 | kernelCompositeInvert: argOops size: argCount 3 | "Automatically generated (see generatePluginKernels)" 4 | | result | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | argCount ~= 0 9 | ifTrue: [^self fail: 'wrong argument count in CompositeInvert']. 10 | result := self cCode: 'gezira_CompositeInvert(init)'. 11 | self pushKernel: result. 12 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelCompositeLighten.size..st: -------------------------------------------------------------------------------- 1 | generated 2 | kernelCompositeLighten: argOops size: argCount 3 | "Automatically generated (see generatePluginKernels)" 4 | | result | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | argCount ~= 0 9 | ifTrue: [^self fail: 'wrong argument count in CompositeLighten']. 10 | result := self cCode: 'gezira_CompositeLighten(init)'. 11 | self pushKernel: result. 12 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelCompositeMultiply.size..st: -------------------------------------------------------------------------------- 1 | generated 2 | kernelCompositeMultiply: argOops size: argCount 3 | "Automatically generated (see generatePluginKernels)" 4 | | result | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | argCount ~= 0 9 | ifTrue: [^self fail: 'wrong argument count in CompositeMultiply']. 10 | result := self cCode: 'gezira_CompositeMultiply(init)'. 11 | self pushKernel: result. 12 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelCompositeOver.size..st: -------------------------------------------------------------------------------- 1 | generated 2 | kernelCompositeOver: argOops size: argCount 3 | "Automatically generated (see generatePluginKernels)" 4 | | result | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | argCount ~= 0 9 | ifTrue: [^self fail: 'wrong argument count in CompositeOver']. 10 | result := self cCode: 'gezira_CompositeOver(init)'. 11 | self pushKernel: result. 12 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelCompositeOverlay.size..st: -------------------------------------------------------------------------------- 1 | generated 2 | kernelCompositeOverlay: argOops size: argCount 3 | "Automatically generated (see generatePluginKernels)" 4 | | result | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | argCount ~= 0 9 | ifTrue: [^self fail: 'wrong argument count in CompositeOverlay']. 10 | result := self cCode: 'gezira_CompositeOverlay(init)'. 11 | self pushKernel: result. 12 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelCompositePlus.size..st: -------------------------------------------------------------------------------- 1 | generated 2 | kernelCompositePlus: argOops size: argCount 3 | "Automatically generated (see generatePluginKernels)" 4 | | result | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | argCount ~= 0 9 | ifTrue: [^self fail: 'wrong argument count in CompositePlus']. 10 | result := self cCode: 'gezira_CompositePlus(init)'. 11 | self pushKernel: result. 12 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelCompositeScreen.size..st: -------------------------------------------------------------------------------- 1 | generated 2 | kernelCompositeScreen: argOops size: argCount 3 | "Automatically generated (see generatePluginKernels)" 4 | | result | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | argCount ~= 0 9 | ifTrue: [^self fail: 'wrong argument count in CompositeScreen']. 10 | result := self cCode: 'gezira_CompositeScreen(init)'. 11 | self pushKernel: result. 12 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelCompositeSoftLight.size..st: -------------------------------------------------------------------------------- 1 | generated 2 | kernelCompositeSoftLight: argOops size: argCount 3 | "Automatically generated (see generatePluginKernels)" 4 | | result | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | argCount ~= 0 9 | ifTrue: [^self fail: 'wrong argument count in CompositeSoftLight']. 10 | result := self cCode: 'gezira_CompositeSoftLight(init)'. 11 | self pushKernel: result. 12 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelCompositeSrc.size..st: -------------------------------------------------------------------------------- 1 | generated 2 | kernelCompositeSrc: argOops size: argCount 3 | "Automatically generated (see generatePluginKernels)" 4 | | result | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | argCount ~= 0 9 | ifTrue: [^self fail: 'wrong argument count in CompositeSrc']. 10 | result := self cCode: 'gezira_CompositeSrc(init)'. 11 | self pushKernel: result. 12 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelCompositeSrcAtop.size..st: -------------------------------------------------------------------------------- 1 | generated 2 | kernelCompositeSrcAtop: argOops size: argCount 3 | "Automatically generated (see generatePluginKernels)" 4 | | result | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | argCount ~= 0 9 | ifTrue: [^self fail: 'wrong argument count in CompositeSrcAtop']. 10 | result := self cCode: 'gezira_CompositeSrcAtop(init)'. 11 | self pushKernel: result. 12 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelCompositeSrcIn.size..st: -------------------------------------------------------------------------------- 1 | generated 2 | kernelCompositeSrcIn: argOops size: argCount 3 | "Automatically generated (see generatePluginKernels)" 4 | | result | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | argCount ~= 0 9 | ifTrue: [^self fail: 'wrong argument count in CompositeSrcIn']. 10 | result := self cCode: 'gezira_CompositeSrcIn(init)'. 11 | self pushKernel: result. 12 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelCompositeSrcOut.size..st: -------------------------------------------------------------------------------- 1 | generated 2 | kernelCompositeSrcOut: argOops size: argCount 3 | "Automatically generated (see generatePluginKernels)" 4 | | result | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | argCount ~= 0 9 | ifTrue: [^self fail: 'wrong argument count in CompositeSrcOut']. 10 | result := self cCode: 'gezira_CompositeSrcOut(init)'. 11 | self pushKernel: result. 12 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelCompositeSubtract.size..st: -------------------------------------------------------------------------------- 1 | generated 2 | kernelCompositeSubtract: argOops size: argCount 3 | "Automatically generated (see generatePluginKernels)" 4 | | result | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | argCount ~= 0 9 | ifTrue: [^self fail: 'wrong argument count in CompositeSubtract']. 10 | result := self cCode: 'gezira_CompositeSubtract(init)'. 11 | self pushKernel: result. 12 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelCompositeTextures.size..st: -------------------------------------------------------------------------------- 1 | generated 2 | kernelCompositeTextures: argOops size: argCount 3 | "Automatically generated (see generatePluginKernels)" 4 | | result t1 t2 c | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | self var: #t1 type: 'nile_Process_t*'. 9 | self var: #t2 type: 'nile_Process_t*'. 10 | self var: #c type: 'nile_Process_t*'. 11 | argCount ~= 0 12 | ifTrue: [^self fail: 'wrong argument count in CompositeTextures']. 13 | c := self popKernel. 14 | t2 := self popKernel. 15 | t1 := self popKernel. 16 | interpreterProxy failed ifTrue: [^self fail: 'wrong arguments to CompositeTextures']. 17 | result := self cCode: 'gezira_CompositeTextures(init, t1, t2, c)'. 18 | self pushKernel: result. 19 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelCompositeXor.size..st: -------------------------------------------------------------------------------- 1 | generated 2 | kernelCompositeXor: argOops size: argCount 3 | "Automatically generated (see generatePluginKernels)" 4 | | result | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | argCount ~= 0 9 | ifTrue: [^self fail: 'wrong argument count in CompositeXor']. 10 | result := self cCode: 'gezira_CompositeXor(init)'. 11 | self pushKernel: result. 12 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelContrastiveOver.size..st: -------------------------------------------------------------------------------- 1 | generated 2 | kernelContrastiveOver: argOops size: argCount 3 | "Automatically generated (see generatePluginKernels)" 4 | | result a | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | self var: #a type: 'float'. 9 | argCount ~= 1 10 | ifTrue: [^self fail: 'wrong argument count in ContrastiveOver']. 11 | a := interpreterProxy floatValueOf: (argOops at: 0). 12 | interpreterProxy failed ifTrue: [^self fail: 'wrong arguments to ContrastiveOver']. 13 | result := self cCode: 'gezira_ContrastiveOver(init, a)'. 14 | self pushKernel: result. 15 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelFunnel.size..st: -------------------------------------------------------------------------------- 1 | commands 2 | kernelFunnel: argOops size: argCount 3 | "No arguments" 4 | | result | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | self var: #v type: 'nile_Process_t**'. 9 | 10 | argCount ~= 0 11 | ifTrue: [^self fail: 'Funnel takes no arguments']. 12 | 13 | result := self cCode: 'nile_Funnel (init)'. 14 | self pushKernel: result. 15 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelGaussianBlur11x1.size..st: -------------------------------------------------------------------------------- 1 | generated 2 | kernelGaussianBlur11x1: argOops size: argCount 3 | "Automatically generated (see generatePluginKernels)" 4 | | result f t | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | self var: #f type: 'float'. 9 | self var: #t type: 'nile_Process_t*'. 10 | argCount ~= 1 11 | ifTrue: [^self fail: 'wrong argument count in GaussianBlur11x1']. 12 | t := self popKernel. 13 | f := interpreterProxy floatValueOf: (argOops at: 0). 14 | interpreterProxy failed ifTrue: [^self fail: 'wrong arguments to GaussianBlur11x1']. 15 | result := self cCode: 'gezira_GaussianBlur11x1(init, f, t)'. 16 | self pushKernel: result. 17 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelGaussianBlur1x11.size..st: -------------------------------------------------------------------------------- 1 | generated 2 | kernelGaussianBlur1x11: argOops size: argCount 3 | "Automatically generated (see generatePluginKernels)" 4 | | result f t | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | self var: #f type: 'float'. 9 | self var: #t type: 'nile_Process_t*'. 10 | argCount ~= 1 11 | ifTrue: [^self fail: 'wrong argument count in GaussianBlur1x11']. 12 | t := self popKernel. 13 | f := interpreterProxy floatValueOf: (argOops at: 0). 14 | interpreterProxy failed ifTrue: [^self fail: 'wrong arguments to GaussianBlur1x11']. 15 | result := self cCode: 'gezira_GaussianBlur1x11(init, f, t)'. 16 | self pushKernel: result. 17 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelGaussianBlur1x21.size..st: -------------------------------------------------------------------------------- 1 | generated 2 | kernelGaussianBlur1x21: argOops size: argCount 3 | "Automatically generated (see generatePluginKernels)" 4 | | result f t | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | self var: #f type: 'float'. 9 | self var: #t type: 'nile_Process_t*'. 10 | argCount ~= 1 11 | ifTrue: [^self fail: 'wrong argument count in GaussianBlur1x21']. 12 | t := self popKernel. 13 | f := interpreterProxy floatValueOf: (argOops at: 0). 14 | interpreterProxy failed ifTrue: [^self fail: 'wrong arguments to GaussianBlur1x21']. 15 | result := self cCode: 'gezira_GaussianBlur1x21(init, f, t)'. 16 | self pushKernel: result. 17 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelGaussianBlur1x5.size..st: -------------------------------------------------------------------------------- 1 | generated 2 | kernelGaussianBlur1x5: argOops size: argCount 3 | "Automatically generated (see generatePluginKernels)" 4 | | result f t | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | self var: #f type: 'float'. 9 | self var: #t type: 'nile_Process_t*'. 10 | argCount ~= 1 11 | ifTrue: [^self fail: 'wrong argument count in GaussianBlur1x5']. 12 | t := self popKernel. 13 | f := interpreterProxy floatValueOf: (argOops at: 0). 14 | interpreterProxy failed ifTrue: [^self fail: 'wrong arguments to GaussianBlur1x5']. 15 | result := self cCode: 'gezira_GaussianBlur1x5(init, f, t)'. 16 | self pushKernel: result. 17 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelGaussianBlur21x1.size..st: -------------------------------------------------------------------------------- 1 | generated 2 | kernelGaussianBlur21x1: argOops size: argCount 3 | "Automatically generated (see generatePluginKernels)" 4 | | result f t | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | self var: #f type: 'float'. 9 | self var: #t type: 'nile_Process_t*'. 10 | argCount ~= 1 11 | ifTrue: [^self fail: 'wrong argument count in GaussianBlur21x1']. 12 | t := self popKernel. 13 | f := interpreterProxy floatValueOf: (argOops at: 0). 14 | interpreterProxy failed ifTrue: [^self fail: 'wrong arguments to GaussianBlur21x1']. 15 | result := self cCode: 'gezira_GaussianBlur21x1(init, f, t)'. 16 | self pushKernel: result. 17 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelGaussianBlur5x1.size..st: -------------------------------------------------------------------------------- 1 | generated 2 | kernelGaussianBlur5x1: argOops size: argCount 3 | "Automatically generated (see generatePluginKernels)" 4 | | result f t | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | self var: #f type: 'float'. 9 | self var: #t type: 'nile_Process_t*'. 10 | argCount ~= 1 11 | ifTrue: [^self fail: 'wrong argument count in GaussianBlur5x1']. 12 | t := self popKernel. 13 | f := interpreterProxy floatValueOf: (argOops at: 0). 14 | interpreterProxy failed ifTrue: [^self fail: 'wrong arguments to GaussianBlur5x1']. 15 | result := self cCode: 'gezira_GaussianBlur5x1(init, f, t)'. 16 | self pushKernel: result. 17 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelInverseOver.size..st: -------------------------------------------------------------------------------- 1 | generated 2 | kernelInverseOver: argOops size: argCount 3 | "Automatically generated (see generatePluginKernels)" 4 | | result a | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | self var: #a type: 'float'. 9 | argCount ~= 1 10 | ifTrue: [^self fail: 'wrong argument count in InverseOver']. 11 | a := interpreterProxy floatValueOf: (argOops at: 0). 12 | interpreterProxy failed ifTrue: [^self fail: 'wrong arguments to InverseOver']. 13 | result := self cCode: 'gezira_InverseOver(init, a)'. 14 | self pushKernel: result. 15 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelPadGradient.size..st: -------------------------------------------------------------------------------- 1 | generated 2 | kernelPadGradient: argOops size: argCount 3 | "Automatically generated (see generatePluginKernels)" 4 | | result | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | argCount ~= 0 9 | ifTrue: [^self fail: 'wrong argument count in PadGradient']. 10 | result := self cCode: 'gezira_PadGradient(init)'. 11 | self pushKernel: result. 12 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelPadTexture.size..st: -------------------------------------------------------------------------------- 1 | generated 2 | kernelPadTexture: argOops size: argCount 3 | "Automatically generated (see generatePluginKernels)" 4 | | result dX dY | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | self var: #dX type: 'float'. 9 | self var: #dY type: 'float'. 10 | argCount ~= 2 11 | ifTrue: [^self fail: 'wrong argument count in PadTexture']. 12 | dX := interpreterProxy floatValueOf: (argOops at: 0). 13 | dY := interpreterProxy floatValueOf: (argOops at: 1). 14 | interpreterProxy failed ifTrue: [^self fail: 'wrong arguments to PadTexture']. 15 | result := self cCode: 'gezira_PadTexture(init, dX, dY)'. 16 | self pushKernel: result. 17 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelPipeline.size..st: -------------------------------------------------------------------------------- 1 | commands 2 | kernelPipeline: argOops size: argCount 3 | "Argument is an integer, pops n kernels" 4 | | result n v | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | self var: #v type: 'nile_Process_t**'. 9 | 10 | argCount ~= 1 11 | ifTrue: [^self fail: 'wrong kernel argument count in Pipeline']. 12 | 13 | n := interpreterProxy checkedIntegerValueOf: (argOops at: 0). 14 | v := self popKernels: n. 15 | interpreterProxy failed ifTrue: [^nil]. 16 | 17 | result := self cCode: 'nile_Process_pipe_v (v, n)' inSmalltalk: [v. n]. 18 | self pushKernel: result. 19 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelRadialGradient.size..st: -------------------------------------------------------------------------------- 1 | generated 2 | kernelRadialGradient: argOops size: argCount 3 | "Automatically generated (see generatePluginKernels)" 4 | | result cX cY r | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | self var: #cX type: 'float'. 9 | self var: #cY type: 'float'. 10 | self var: #r type: 'float'. 11 | argCount ~= 3 12 | ifTrue: [^self fail: 'wrong argument count in RadialGradient']. 13 | cX := interpreterProxy floatValueOf: (argOops at: 0). 14 | cY := interpreterProxy floatValueOf: (argOops at: 1). 15 | r := interpreterProxy floatValueOf: (argOops at: 2). 16 | interpreterProxy failed ifTrue: [^self fail: 'wrong arguments to RadialGradient']. 17 | result := self cCode: 'gezira_RadialGradient(init, cX, cY, r)'. 18 | self pushKernel: result. 19 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelRasterize.size..st: -------------------------------------------------------------------------------- 1 | generated 2 | kernelRasterize: argOops size: argCount 3 | "Automatically generated (see generatePluginKernels)" 4 | | result | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | argCount ~= 0 9 | ifTrue: [^self fail: 'wrong argument count in Rasterize']. 10 | result := self cCode: 'gezira_Rasterize(init)'. 11 | self pushKernel: result. 12 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelReadFromImageARGB32.size..st: -------------------------------------------------------------------------------- 1 | commands 2 | kernelReadFromImageARGB32: argOops size: argCount 3 | "Argument is a Form" 4 | | result image | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | self var: #image type: 'gezira_Image_t*'. 9 | 10 | argCount ~= 1 11 | ifTrue: [^self fail: 'wrong kernel argument count in ReadFromImageARGB32']. 12 | 13 | image := self imageFromForm: (argOops at: 0). 14 | interpreterProxy failed ifTrue: [^nil]. 15 | 16 | result := self cCode: 'gezira_ReadFromImage_ARGB32 (init, image, 1)' 17 | inSmalltalk: [image]. 18 | self pushKernel: result. 19 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelReflectGradient.size..st: -------------------------------------------------------------------------------- 1 | generated 2 | kernelReflectGradient: argOops size: argCount 3 | "Automatically generated (see generatePluginKernels)" 4 | | result | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | argCount ~= 0 9 | ifTrue: [^self fail: 'wrong argument count in ReflectGradient']. 10 | result := self cCode: 'gezira_ReflectGradient(init)'. 11 | self pushKernel: result. 12 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelReflectTexture.size..st: -------------------------------------------------------------------------------- 1 | generated 2 | kernelReflectTexture: argOops size: argCount 3 | "Automatically generated (see generatePluginKernels)" 4 | | result dX dY | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | self var: #dX type: 'float'. 9 | self var: #dY type: 'float'. 10 | argCount ~= 2 11 | ifTrue: [^self fail: 'wrong argument count in ReflectTexture']. 12 | dX := interpreterProxy floatValueOf: (argOops at: 0). 13 | dY := interpreterProxy floatValueOf: (argOops at: 1). 14 | interpreterProxy failed ifTrue: [^self fail: 'wrong arguments to ReflectTexture']. 15 | result := self cCode: 'gezira_ReflectTexture(init, dX, dY)'. 16 | self pushKernel: result. 17 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelRepeatGradient.size..st: -------------------------------------------------------------------------------- 1 | generated 2 | kernelRepeatGradient: argOops size: argCount 3 | "Automatically generated (see generatePluginKernels)" 4 | | result | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | argCount ~= 0 9 | ifTrue: [^self fail: 'wrong argument count in RepeatGradient']. 10 | result := self cCode: 'gezira_RepeatGradient(init)'. 11 | self pushKernel: result. 12 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelRepeatTexture.size..st: -------------------------------------------------------------------------------- 1 | generated 2 | kernelRepeatTexture: argOops size: argCount 3 | "Automatically generated (see generatePluginKernels)" 4 | | result dX dY | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | self var: #dX type: 'float'. 9 | self var: #dY type: 'float'. 10 | argCount ~= 2 11 | ifTrue: [^self fail: 'wrong argument count in RepeatTexture']. 12 | dX := interpreterProxy floatValueOf: (argOops at: 0). 13 | dY := interpreterProxy floatValueOf: (argOops at: 1). 14 | interpreterProxy failed ifTrue: [^self fail: 'wrong arguments to RepeatTexture']. 15 | result := self cCode: 'gezira_RepeatTexture(init, dX, dY)'. 16 | self pushKernel: result. 17 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelStrokeBezierPath.size..st: -------------------------------------------------------------------------------- 1 | generated 2 | kernelStrokeBezierPath: argOops size: argCount 3 | "Automatically generated (see generatePluginKernels)" 4 | | result w l c | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | self var: #w type: 'float'. 9 | self var: #l type: 'float'. 10 | self var: #c type: 'float'. 11 | argCount ~= 3 12 | ifTrue: [^self fail: 'wrong argument count in StrokeBezierPath']. 13 | w := interpreterProxy floatValueOf: (argOops at: 0). 14 | l := interpreterProxy floatValueOf: (argOops at: 1). 15 | c := interpreterProxy floatValueOf: (argOops at: 2). 16 | interpreterProxy failed ifTrue: [^self fail: 'wrong arguments to StrokeBezierPath']. 17 | result := self cCode: 'gezira_StrokeBezierPath(init, w, l, c)'. 18 | self pushKernel: result. 19 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/kernelWriteToImageARGB32.size..st: -------------------------------------------------------------------------------- 1 | commands 2 | kernelWriteToImageARGB32: argOops size: argCount 3 | "Argument is a Form" 4 | | result image | 5 | self returnTypeC: 'void'. 6 | self var: #argOops type: 'sqInt*'. 7 | self var: #result type: 'nile_Process_t*'. 8 | self var: #image type: 'gezira_Image_t*'. 9 | 10 | argCount ~= 1 11 | ifTrue: [^self fail: 'wrong kernel argument count in WriteToImageARGB32']. 12 | 13 | image := self imageFromForm: (argOops at: 0). 14 | interpreterProxy failed ifTrue: [^nil]. 15 | 16 | result := self cCode: 'gezira_WriteToImage_ARGB32 (init, image)' 17 | inSmalltalk: [image]. 18 | self pushKernel: result. 19 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/loadArgumentMatrix..st: -------------------------------------------------------------------------------- 1 | matrix primitives 2 | loadArgumentMatrix: matrix 3 | "Load the argument matrix" 4 | self returnTypeC:'float *'. 5 | interpreterProxy failed ifTrue:[^nil]. 6 | ((interpreterProxy isWords: matrix) and:[(interpreterProxy slotSizeOf: matrix) = 6]) 7 | ifFalse:[interpreterProxy primitiveFail. 8 | ^nil]. 9 | ^self cCoerce: (interpreterProxy firstIndexableField: matrix) to:'float *'. -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/makePoint.and..st: -------------------------------------------------------------------------------- 1 | matrix primitives 2 | makePoint: x and: y 3 | "Store the result of a previous operation." 4 | | point xx yy | 5 | self var: #x declareC: 'double x'. 6 | self var: #y declareC: 'double y'. 7 | point := interpreterProxy instantiateClass: interpreterProxy classPoint indexableSize: 2. 8 | interpreterProxy pushRemappableOop: point. 9 | xx := interpreterProxy floatObjectOf: x. 10 | interpreterProxy pushRemappableOop: xx. 11 | yy := interpreterProxy floatObjectOf: y. 12 | xx := interpreterProxy popRemappableOop. 13 | point := interpreterProxy popRemappableOop. 14 | interpreterProxy storePointer: 0 ofObject: point withValue: xx. 15 | interpreterProxy storePointer: 1 ofObject: point withValue: yy. 16 | ^ point. 17 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/matrix2x3TransformPoint..st: -------------------------------------------------------------------------------- 1 | matrix primitives 2 | matrix2x3TransformPoint: m 3 | "Transform the pre-loaded argument point by the given matrix" 4 | self var: #m type:'float *'. 5 | m23ResultX := (m23ArgX * (m at: 0)) + (m23ArgY * (m at: 1)) + (m at: 2). 6 | m23ResultY := (m23ArgX * (m at: 3)) + (m23ArgY * (m at: 4)) + (m at: 5). -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/popKernel.st: -------------------------------------------------------------------------------- 1 | misc 2 | popKernel 3 | self returnTypeC: #'nile_Process_t*'. 4 | stackP > 0 5 | ifFalse: [self fail: 'kernel stack underflow'. ^nil]. 6 | stackP := stackP - 1. 7 | ^stack at: stackP -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/popKernels..st: -------------------------------------------------------------------------------- 1 | misc 2 | popKernels: n 3 | self returnTypeC: #'nile_Process_t**'. 4 | stackP >= n 5 | ifFalse: [self fail: 'kernel stack underflow'. ^nil]. 6 | stackP := stackP - n. 7 | ^stack + stackP -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/primitiveErrorCode.st: -------------------------------------------------------------------------------- 1 | primitives 2 | primitiveErrorCode 3 | self primitive: 'primitiveErrorCode'. 4 | ^errorCode asSmallIntegerObj -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/primitiveErrorItem.st: -------------------------------------------------------------------------------- 1 | primitives 2 | primitiveErrorItem 3 | self primitive: 'primitiveErrorItem'. 4 | ^errorItem asSmallIntegerObj -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/primitiveErrorMessage.st: -------------------------------------------------------------------------------- 1 | primitives 2 | primitiveErrorMessage 3 | | msgLength msgOop msgPtr | 4 | self primitive: 'primitiveErrorMessage'. 5 | self var: #msgPtr type: #'char*'. 6 | msgLength := 0. 7 | errorMsg ~= nil ifTrue: [msgLength := errorMsg strlen]. 8 | msgOop := interpreterProxy instantiateClass: interpreterProxy classString indexableSize: msgLength. 9 | msgLength > 0 ifTrue:[ 10 | msgPtr := interpreterProxy firstIndexableField: msgOop. 11 | msgPtr str: errorMsg ncpy: msgLength]. 12 | ^msgOop -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/primitiveNumberOfCores.st: -------------------------------------------------------------------------------- 1 | primitives 2 | primitiveNumberOfCores 3 | "Answer number of (virtual) cores in this machine" 4 | | numCPU | 5 | self primitive: 'primitiveNumberOfCores'. 6 | numCPU := self cCode: 'sysconf( _SC_NPROCESSORS_ONLN )'. 7 | numCPU < 1 ifTrue: [self fail: 'could not determine number of cores'. ^nil]. 8 | ^numCPU asSmallIntegerObj 9 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/primitiveTransformPoint..st: -------------------------------------------------------------------------------- 1 | matrix primitives 2 | primitiveTransformPoint: aPoint 3 | | matrix | 4 | self inline: false. 5 | self primitive: 'primitiveTransformPoint' parameters: #(Oop). 6 | self var: #matrix type:'float *'. 7 | self loadArgumentPoint: aPoint. 8 | matrix := self loadArgumentMatrix: (interpreterProxy stackObjectValue: 1). 9 | interpreterProxy failed ifTrue:[^nil]. 10 | self matrix2x3TransformPoint: matrix. 11 | ^ self makePoint: m23ResultX and: m23ResultY. 12 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/pushKernel..st: -------------------------------------------------------------------------------- 1 | misc 2 | pushKernel: aKernel 3 | self inline: true. 4 | self returnTypeC: 'void'. 5 | self var: #aKernel type: #'nile_Process_t*'. 6 | stackP < (stack sizeof / (stack at: 0) sizeof) 7 | ifFalse: [self fail: 'kernel stack overflow'. ^nil]. 8 | stack at: stackP put: aKernel. 9 | stackP := stackP + 1. 10 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/reset.st: -------------------------------------------------------------------------------- 1 | initialize-release 2 | reset 3 | | i | 4 | stackP := 0. 5 | errorMsg := nil. 6 | errorItem := 0. 7 | errorCode := self cCode: 'NILE_STATUS_OK'. 8 | i := 0. 9 | [i < (images sizeof / (images at: 0) sizeof) 10 | and: [self cCode: 'images[i].pixels != NULL'] 11 | ] whileTrue: [ 12 | self cCode: 'gezira_Image_done (&images[i])'. 13 | self cCode: 'images[i].pixels = NULL'. 14 | i:= i + 1]. 15 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/shutdownModule.st: -------------------------------------------------------------------------------- 1 | initialize-release 2 | shutdownModule 3 | self export: true. 4 | mem isNil ifFalse: [ 5 | self cCode: 'free (nile_shutdown (init))'. 6 | mem := nil]. 7 | ^true -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/string.equals.len..st: -------------------------------------------------------------------------------- 1 | misc 2 | string: zeroTerminated equals: notTerminated len: length 3 | self var: #zeroTerminated type: 'char*'. 4 | self var: #notTerminated type: 'char*'. 5 | self inline: true. 6 | ^0 = (self str: zeroTerminated n: notTerminated cmp: length) 7 | and: [0 = (zeroTerminated at: length)] -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/instance/topKernel.st: -------------------------------------------------------------------------------- 1 | misc 2 | topKernel 3 | self returnTypeC: #'nile_Process_t*'. 4 | stackP < 1 5 | ifTrue: [self fail: 'empty stack'. ^nil]. 6 | ^stack at: stackP - 1 -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/GeziraBindingsMTPlugin.class/properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "category" : "GeziraBindingsMT-Plugin", 3 | "classinstvars" : [ 4 | ], 5 | "classvars" : [ 6 | "NileBufferSize" ], 7 | "commentStamp" : "bf 8/2/2010 16:55", 8 | "instvars" : [ 9 | "threads", 10 | "init", 11 | "mem", 12 | "memSize", 13 | "stack", 14 | "stackP", 15 | "images", 16 | "wasSync", 17 | "errorMsg", 18 | "errorItem", 19 | "errorCode", 20 | "m23ArgX", 21 | "m23ArgY", 22 | "m23ResultX", 23 | "m23ResultY" ], 24 | "name" : "GeziraBindingsMTPlugin", 25 | "pools" : [ 26 | ], 27 | "super" : "SmartSyntaxInterpreterPlugin", 28 | "type" : "normal" } 29 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/monticello.meta/categories.st: -------------------------------------------------------------------------------- 1 | SystemOrganization addCategory: #'GeziraBindingsMT-Plugin'! 2 | -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/monticello.meta/initializers.st: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/damelang/gezira/9f3e6846f4a1732c344a3b99e5d670deac618b17/bindings/squeak/GeziraBindingsMT-Plugin.package/monticello.meta/initializers.st -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/monticello.meta/package: -------------------------------------------------------------------------------- 1 | (name 'GeziraBindingsMT-Plugin') -------------------------------------------------------------------------------- /bindings/squeak/GeziraBindingsMT-Plugin.package/properties.json: -------------------------------------------------------------------------------- 1 | { 2 | } 3 | -------------------------------------------------------------------------------- /c/Makefile.msvc: -------------------------------------------------------------------------------- 1 | NILE_RUNTIME = ..\..\nile\runtimes\c 2 | CFLAGS = /nologo /TP /EHsc /GR- \ 3 | /W3 /wd4244 /wd4101 \ 4 | /I$(NILE_RUNTIME) \ 5 | /fp:fast /arch:SSE2 /O2 /Oi 6 | 7 | libgezira.lib: gezira.obj gezira-image.obj 8 | lib /nologo /OUT:libgezira.lib gezira.obj gezira-image.obj 9 | 10 | gezira.obj: gezira.h gezira.c Makefile.msvc 11 | cl $(CFLAGS) /c gezira.c 12 | 13 | gezira-image.obj: gezira-image.h gezira-image.c Makefile.msvc 14 | cl $(CFLAGS) /c gezira-image.c 15 | 16 | clean: 17 | del *.obj *.lib 18 | -------------------------------------------------------------------------------- /c/demos/Makefile.gcc: -------------------------------------------------------------------------------- 1 | NILE_RUNTIME := ../../../nile/runtimes/c 2 | TARGET := $(shell $(CC) -dumpmachine) 3 | LDFLAGS := -L.. -lgezira -L$(NILE_RUNTIME) -lnile #`freetype-config --libs` 4 | CFLAGS := -Wall -Werror -Wno-unused \ 5 | -I.. -I$(NILE_RUNTIME) \ 6 | -O3 -ffast-math 7 | #`freetype-config --cflags` \ 8 | 9 | ifneq (,$(findstring darwin,$(TARGET))) 10 | LDFLAGS += -framework Cocoa 11 | else ifneq (,$(findstring mingw,$(TARGET))$(findstring cygwin,$(TARGET))) 12 | LDFLAGS += -lgdi32 #-mwindows 13 | else 14 | LDFLAGS += -lXext -lm -pthread 15 | endif 16 | 17 | %-demo: %-demo.c FORCE 18 | $(MAKE) -C $(NILE_RUNTIME) -f Makefile.gcc 19 | $(MAKE) -C .. -f Makefile.gcc 20 | $(CC) $< $(CFLAGS) $(LDFLAGS) -o $@ 21 | 22 | snow-demo: 23 | 24 | clean: 25 | $(RM) -r *-demo *.dSYM *.exe 26 | 27 | FORCE: 28 | -------------------------------------------------------------------------------- /c/demos/TODO: -------------------------------------------------------------------------------- 1 | - snowflake probably has more beziers than needed 2 | - get keyboard events a better way 3 | - Add other platforms window code 4 | -------------------------------------------------------------------------------- /c/demos/utils/all.h: -------------------------------------------------------------------------------- 1 | #include "fps.h" 2 | #include "random.h" 3 | #include "matrix.h" 4 | #include "window.h" 5 | #include "snowflake.h" 6 | #include "star.h" 7 | -------------------------------------------------------------------------------- /c/demos/utils/random.h: -------------------------------------------------------------------------------- 1 | #ifndef GEZIRA_RANDOM_H 2 | #define GEZIRA_RANDOM_H 3 | 4 | #include 5 | 6 | static float 7 | gezira_random (float min, float max) 8 | { 9 | static int called_srand = 0; 10 | if (!called_srand) 11 | srand (1234567); 12 | called_srand = 1; 13 | return rand () / (float) RAND_MAX * (max - min) + min; 14 | } 15 | 16 | #endif 17 | -------------------------------------------------------------------------------- /js/TODO: -------------------------------------------------------------------------------- 1 | - incorporate generated gezira js code 2 | - must split out ReadImage and WriteImage kernels 3 | -------------------------------------------------------------------------------- /js/demos/sunset.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/damelang/gezira/9f3e6846f4a1732c344a3b99e5d670deac618b17/js/demos/sunset.jpg --------------------------------------------------------------------------------