/* Language: Processing Description: Processing is a flexible software sketchbook and a language for learning how to code within the context of the visual arts. Author: Erik Paluka Website: https://processing.org Category: graphics */ function processing(hljs) { const regex = hljs.regex; const BUILT_INS = [ "displayHeight", "displayWidth", "mouseY", "mouseX", "mousePressed", "pmouseX", "pmouseY", "key", "keyCode", "pixels", "focused", "frameCount", "frameRate", "height", "width", "size", "createGraphics", "beginDraw", "createShape", "loadShape", "PShape", "arc", "ellipse", "line", "point", "quad", "rect", "triangle", "bezier", "bezierDetail", "bezierPoint", "bezierTangent", "curve", "curveDetail", "curvePoint", "curveTangent", "curveTightness", "shape", "shapeMode", "beginContour", "beginShape", "bezierVertex", "curveVertex", "endContour", "endShape", "quadraticVertex", "vertex", "ellipseMode", "noSmooth", "rectMode", "smooth", "strokeCap", "strokeJoin", "strokeWeight", "mouseClicked", "mouseDragged", "mouseMoved", "mousePressed", "mouseReleased", "mouseWheel", "keyPressed", "keyPressedkeyReleased", "keyTyped", "print", "println", "save", "saveFrame", "day", "hour", "millis", "minute", "month", "second", "year", "background", "clear", "colorMode", "fill", "noFill", "noStroke", "stroke", "alpha", "blue", "brightness", "color", "green", "hue", "lerpColor", "red", "saturation", "modelX", "modelY", "modelZ", "screenX", "screenY", "screenZ", "ambient", "emissive", "shininess", "specular", "add", "createImage", "beginCamera", "camera", "endCamera", "frustum", "ortho", "perspective", "printCamera", "printProjection", "cursor", "frameRate", "noCursor", "exit", "loop", "noLoop", "popStyle", "pushStyle", "redraw", "binary", "boolean", "byte", "char", "float", "hex", "int", "str", "unbinary", "unhex", "join", "match", "matchAll", "nf", "nfc", "nfp", "nfs", "split", "splitTokens", "trim", "append", "arrayCopy", "concat", "expand", "reverse", "shorten", "sort", "splice", "subset", "box", "sphere", "sphereDetail", "createInput", "createReader", "loadBytes", "loadJSONArray", "loadJSONObject", "loadStrings", "loadTable", "loadXML", "open", "parseXML", "saveTable", "selectFolder", "selectInput", "beginRaw", "beginRecord", "createOutput", "createWriter", "endRaw", "endRecord", "PrintWritersaveBytes", "saveJSONArray", "saveJSONObject", "saveStream", "saveStrings", "saveXML", "selectOutput", "popMatrix", "printMatrix", "pushMatrix", "resetMatrix", "rotate", "rotateX", "rotateY", "rotateZ", "scale", "shearX", "shearY", "translate", "ambientLight", "directionalLight", "lightFalloff", "lights", "lightSpecular", "noLights", "normal", "pointLight", "spotLight", "image", "imageMode", "loadImage", "noTint", "requestImage", "tint", "texture", "textureMode", "textureWrap", "blend", "copy", "filter", "get", "loadPixels", "set", "updatePixels", "blendMode", "loadShader", "PShaderresetShader", "shader", "createFont", "loadFont", "text", "textFont", "textAlign", "textLeading", "textMode", "textSize", "textWidth", "textAscent", "textDescent", "abs", "ceil", "constrain", "dist", "exp", "floor", "lerp", "log", "mag", "map", "max", "min", "norm", "pow", "round", "sq", "sqrt", "acos", "asin", "atan", "atan2", "cos", "degrees", "radians", "sin", "tan", "noise", "noiseDetail", "noiseSeed", "random", "randomGaussian", "randomSeed" ]; const IDENT = hljs.IDENT_RE; const FUNC_NAME = { variants: [ { match: regex.concat(regex.either(...BUILT_INS), regex.lookahead(/\s*\(/)), className: "built_in" }, { relevance: 0, match: regex.concat( /\b(?!for|if|while)/, IDENT, regex.lookahead(/\s*\(/)), className: "title.function" } ] }; const NEW_CLASS = { match: [ /new\s+/, IDENT ], className: { 1: "keyword", 2: "class.title" } }; const PROPERTY = { relevance: 0, match: [ /\./, IDENT ], className: { 2: "property" } }; const CLASS = { variants: [ { match: [ /class/, /\s+/, IDENT, /\s+/, /extends/, /\s+/, IDENT ] }, { match: [ /class/, /\s+/, IDENT ] } ], className: { 1: "keyword", 3: "title.class", 5: "keyword", 7: "title.class.inherited" } }; const TYPES = [ "boolean", "byte", "char", "color", "double", "float", "int", "long", "short", ]; const CLASSES = [ "BufferedReader", "PVector", "PFont", "PImage", "PGraphics", "HashMap", "String", "Array", "FloatDict", "ArrayList", "FloatList", "IntDict", "IntList", "JSONArray", "JSONObject", "Object", "StringDict", "StringList", "Table", "TableRow", "XML" ]; const JAVA_KEYWORDS = [ "abstract", "assert", "break", "case", "catch", "const", "continue", "default", "else", "enum", "final", "finally", "for", "if", "import", "instanceof", "long", "native", "new", "package", "private", "private", "protected", "protected", "public", "public", "return", "static", "strictfp", "switch", "synchronized", "throw", "throws", "transient", "try", "void", "volatile", "while" ]; return { name: 'Processing', aliases: [ 'pde' ], keywords: { keyword: [ ...JAVA_KEYWORDS ], literal: 'P2D P3D HALF_PI PI QUARTER_PI TAU TWO_PI null true false', title: 'setup draw', variable: "super this", built_in: [ ...BUILT_INS, ...CLASSES ], type: TYPES }, contains: [ CLASS, NEW_CLASS, FUNC_NAME, PROPERTY, hljs.C_LINE_COMMENT_MODE, hljs.C_BLOCK_COMMENT_MODE, hljs.APOS_STRING_MODE, hljs.QUOTE_STRING_MODE, hljs.C_NUMBER_MODE ] }; } export { processing as default };