The COINS compiler infrastructure is composed of
At present, the compiler infrastructure contains two parsers, for C and Fortran77, and 6 code generators, for SPARC, x86, x86_64, ARM, MIPS, SH-4, PowerPC, Alpha, MicroBlaze, and Thumb. Thus, it has 2*10 = 20 compilers.
Compilation with debug-print (trace) option will show how the compiling process proceeds and how a source program is transformed into intermediate representations (HIR and LIR) and then into a target machine code. It is the shortest way of understanding how the compiler infrastructure works and understanding HIR, LIR, and symbol table that are used as interfaces between compiler components. The debug-print option will be a great help in debugging the compiler when addition/modification is attempted.
Please try to compile several short programs specifying debug-print option in such a way as
java -classpath ./classes coins.driver.Driver -S -coins:trace=HIR.1/LIR.1/Sym.1 sample.c
(See 2. How to use the Compiler Driver and 3. How to use C Compiler.)
The COINS compiler infrastructure is composed of 3 major parts. The front-end part translates the source program into HIR (High-level Intermediate Representation). The middle part converts HIR into LIR (Low-level Intermediate Representation) and also does optimization and parallelization transformations on HIR or LIR. The back-end part generates the assembler code of the target machine from LIR.
Additional management part contains miscellaneous functions such as compiler control, HIR management, and symbol management.
The overall structure of COINS is shown in Fig.1-1.
The concrete representation of HIR is a tree. An HIR tree is an abstract representation of a source program. It reflects logical structure of the source program such as subprogram, block, statement, expression, compound variable, simple variable, constant, and so on. Every language constructs in HIR has a type such as int, float, vector, struct, union, and so on. HIR is designed so as to be able to represent programs of various languages such as C, Fortran, Pascal.
LIR is an abstract representation of machine language program. In LIR, operations are decomposed into elementary operations such as SET, JUMP, CALL, etc. with simple or compound operands. The operands may represent memory, register, or expression. Data type of LIR corresponds to data type handled in machines such as integer, float of some bit length.
LIR is a language that can represents not only operations but also the entire program providing features to describe a module (a collection of functions), memory area, and data. Semantics of LIR is defined rigorously according to the denotational semantics to avoid misunderstanding.
The compiler infrastructure is entirely written in Java.
The front-end part translates source languages such as C and Fortran into HIR. HIR has been designed so that high level language concepts can be represented and optimizations and parallelizations can be done on that level in (almost) language independent and machine independent manner. It has been designed by abstracting currently used procedural languages.
Language specific parts are concentrated in the front-end part so that the middle part (optimizers, parallelizers, etc.) and the back-end part (code generators, machine level optimizers, etc.) can be built language independently.
A C language analyzer and a Fortran 77 analyzer have already been provided to generate HIR from C and Fortran, repectively. In order to make a compiler for other language, it is sufficient to build a language analyzer that translates the language into HIR, except for some minor adjustment for a few modules.
Examples of making new compilers are shown in Developing new compilers with COINS
In generating HIR, it is required to understand the overview of HIR.
The HIR manager (HIR) and symbol table manager (Sym) are described in
interface modules such as HIR0.java (plain HIR interface), HIR.java
(full HIR interface), Sym0.java (plain Symbol table interface),
Sym.java (full Symbol table interface).
Their implementation modules are HIR_Impl.java and SymImpl.java.
Detailed specifications of access methods are described
in the interface modules so that it is not necessary to see
implementation modules except for some special cases.
In order to make or modify the front-end part, it is necessary to read the interfaces
and then their sub-interfaces, if you cannot get sufficient information. Some important sub-interfaces to be read are
Usage of methods is usually described in upper interfaces so that it is not necessary to read lower interfaces. Methods are interrelated and there may be restrictions in invoking them. In upper interfaces, many upper methods are provided to make the use of access methods simple. You will misuse the access methods if you read lower interfaces or read implementation modules before reading upper interfaces.
As it is mentioned, the back-end of COINS is language independfent and the same back-end can generate target machine code for various languages. In order to make a new code generator for some machine, it is necessary only to add a target machine description (TMD) and a subclass of coins.MachineParam for that machine. In the COINS Compiler Infrastructure, the new code generator is automatically generated based on the given TMD at the time of building COINS.
The COINS generates assembly language program for the machine refering LIR that is translated from HIR. The LIR can represent machine level operations in abstract form so that all back-end processing such as optimization, register allocation, and instruction scheduling can be written machine independently.
All modules in the back-end do LIR-to-LIR transformation except for the last one that transforms LIR to the assembly language of the target machine. The syntax of LIR is the same all through the processings so that the processings can be written machine independently. Some information attached to LIR may contain items specific to the target machine. Operands of LIR may be an LIR expression as well as a register or a memory location.
In the process of instruction selection for the target machine, compound LIR expressions are decomposed into simple LIR expressions each of which may correspond to some machine instruction of the target machine. The decomposed LIR and LIR expression allocated with physical register of the target machine can be treated machine independently because the syntax of LIR is the same in all cases.
The target machine description TMD represents the correspondence of LIR patterns and target machine instruction sequence in the form of LIR-to-LIR transformation. TMD also describes the structure of register set and calling sequence, etc.
There are several classes that contains global information and methods available to all over the compiler infrastructure. They are placed in "coins" package. Some of them are
Machine dependent parameters and methods are concentrated in
Source language dependent parameters and methods are concentrated in
Information requiring mutual exclusion between individual compilers in COINS such as compiler options are concentrated in
The package structure of the infrastructure is the following, where "#" means a language dependent package, and "*" means a machine dependent package.
coins -- Top level package of the COINS Compiler Infrastructure #cfront -- C parser converting C to AST (abstract syntax tree for C) #ast -- Classes to generate AST for C #expr -- AST expression generation #stmnt -- AST statement generation #ffront -- Fortran77 parser translating Fortran77 to HIR driver -- Compiler driver drivergen -- Driver generator #casttohir -- C AST to HIR translator ir -- Intermediate representation IR hir -- High level intermediate representation HIR sym -- Symbol table for HIR hir2lir -- HIR to LIR converter flow -- Control flow and data flow analyzer for HIR aflow -- Obsolete version of flow (used only in mdf) alias -- Alias analyzer opt -- HIR optimizer ssa -- SSA form optimizer for LIR lparallel -- loop parallelizer mdf -- Coarse grain parallelizing module (SMP parallelizer) simd -- SIMD parallelizer snapshot -- Make snap shot file (XML file) for the visualizer backend -- Back-end ana -- Control flow analyzer for LIR cfg -- Control flow graph builder for LIR *gen -- Code generator and target machine descriptions lir -- LIR manager opt -- Backend optimizer regalo -- Register allocator sched -- Instruction scheduler sym -- LIR symbol manager *targets -- Machine parameter table interface sim -- LIR simulator contrib -- User contribution (modules invoked by attach option) asmpp -- Assembler level preprocessor tools -- Back-end tools util -- Back-end utility hir2c -- HIR to C translator lir2c -- LIR to C translator
The compiler driver described in coins.driver.Driver.java controls the execution of the COINS C compiler. It contains definitions of compiler options and invocation statements for compiler components. The procedure of component invocation is described in the method compile(....) in Driver.java. See 2. How to use the Compiler Driver for details.
To change the sequence of component invocations and to add, replace, delete some compiler components, Driver.java may be changed. It would be better to make a subclass of Driver.java and override some of Driver's methods appropriately. See, for example, Developing new compilers with COINS.
The infrastructure does not use static fields except for "static final" in order to make it possible to develop a compiler where its components can be executed in concurrent. All methods except for some ones in Root classes (classes such as IoRoot, SymRoot, HirRoot, LirRoot, etc.) are non-static methods and should be applied to instances.
The compiler driver instantiates IoRoot first and supplies source file, object file, print file, etc. (See getSourceFile(), printOut, objectFile, msgOut, etc. in IoRoot.java). All compiler components should convey the instance of IoRoot (ioRoot) directly or indirectly and make it protected or public so that it can be accessed directly or indirectly from methods in the component.
In more detail, objects of other Root classes include a reference to the instance of IoRoot in order to enable input/output operations. All Sym objects include a reference to SymRoot object, all HIR objects include a reference to HirRoot, and so on. In this way, almost all classes has a link to the IoRoot directly or indirectly in order to enable input/output operations in their methods. IoRoot has such methods as
getSourceFile(), getSourceFilePath(), getCompileSpecification()
to access files and compile specifications given by command line.
As the next step, the compiler driver instantiates SymRoot to make symbol information be shared between compiler components. All Sym objects such as symbol table and entries in the symbol table (variable, subprogram, constant, type, etc.) contain a reference to the SymRoot object so that methods of Sym class and IoRoot class can be invoked. The symbol tables are nested reflecting scope of symbols and organized into tree structure.
The root of the symbol tables is named as symTableRoot. The symbol table currently effective is called current symbol table and named as symTableCurrent. They are accessed from SymRoot object. Built-in symbols representing basic types, etc. are registered in symTableRoot and can be accessed from SymRoot object, hence they can be accessed from all methods under Sym and its subclasses.
The compiler driver instantiates HirRoot and then invokes some parser such as C parser that translates source program into HIR. The parser should convey the instance of HirRoot to its components so that they can access I/O files, symbol tables, and HIR information. The super class of HirRoot is IrRoot where the root of intermediate representation (IR) of input source program is recorded as programRoot. The IrRoot is also the super class of HirRoot. HIR representation of input program can be traced starting from programRoot.
The compiler driver may either parse all subprograms in a source file before code generation, or repeat parsing and code generation for each subprogram in the source file. In the former case, inter-procedural optimization and parallelization may be possible but consumes large memory space. In the later case, required memory space is relatively small but the possibility of inter-procedural optimization is limited.
Error messages and warning messages are issued by invoking put method of Message class in "coins" package. The number of messages issued is counted for each group of messages. Compiler implementers may prepare their own error handlers that invokes the put method in order to provide some information peculiar to each component such as source program line number. (See Message.java.)
It is often required to see the status of compiler for debugging. The method
void print(int pLevel, String pAt, String pMessage)
in the class Debug in coins package prints pAt and pMessage if pLevel is less or equal to the debug level specified by command line. Its usage is illustrated by
hirRoot.ioRoot.dbgHir.print(4, "subpNode", pSubp.getName());
(See Debug.java.)
In the process of parsing, the list of subprogram definitions will be constructed (by addSubpDefinition() of coins.ir.hir.Program called in the parser). Each subprogram definition can be get by using iterator in such way as
coins.ir.IrList lSubpDefList = ((Program)hirRoot.programRoot).getSubpDefinitionList(); Iterator lSubpDefIterator = lSubpDefList.iterator(); while (lSubpDefIterator.hasNext()) { SubpDefinition lSubpDef = (SubpDefinition)(lSubpDefIterator.next()); .... }
where, hirRoot refers to the HirRoot object.
The subprogram defined by the subprogram definition is get by
Subp lSubp = lSubpDef.getSubpSym();
The symbol table local to the subprogram is get by
SymTable lSymTable = lSubp.getSymTable();
or
SymTable lSymTable = lSubpDef.getSymTable();
The procedural body of the subprogram is get by
HIR lHirSubpBody = lSubp.getHirBody();
or
HIR lHirSubpBody = lSubpDef.getHirBody();
(See IrLisr of coins.ir, SubpDefinition, HirIterator of coins.ir.hir, Subp of coins.sym)
Every HIR nodes of the subprogram lSubp can be traversed by using HirIterator in such a way as
for (HirIterator lHirIterator = hirRoot.hir.hirIterator(lSubp.getHirBody()); lHirIterator.hasNext(); ) { HIR lNode = lHirIterator.next(); .... }
All statements in the subprogram can be traversed by a coding sequence such as
for (HirIterator lHirIterator = hirRoot.hir.hirIterator(lSubp.getHirBody()); lHirIterator.hasNextStmt(); ) { Stmt lStmt = lHirIterator.getNextStmt(); .... }
Note that some node or statement may be null and it is better to do null-check before applying methods to them.
To catch node or statement of some particular class during the traversing procedure, such coding as
if (lNode instanceof VarNode) { .... } if (lNode instanceof SubpNode) { .... } if (lStmt instanceof AssignStmt) { .... }
will be convenient. They may be also caught by such coding as
if (lStmt.getOperator() == HIR.OP_VAR) { .... }
Another way of coding is to use HirVisitor in such a way as
public class ProcessHirNode extends coins.ir.hir.HirVisitorModel1 { public final HirRoot hirRoot; public ProcessSymNode( HirRoot pHirRoot ) { super(pHirRoot); hirRoot = pHirRoot; } public void processSymNode( Subp pSubp ) { hirRoot.symRoot.subpCurrent = pSubp; visit(pSubp.getHirBody()); } protected void atVarNode( VarNode pVarNode ) { .... } protected void atSubpNode( SubpNode pSubpNode ) { .... } .... }
(See HIR, HirVisitor, HirVisitorModel1, HirVisitorModel2 in coins.ir.hir.)
To scan all symbols recorded in symbol tables, iterators are provided in SymTable interface. A coding sequence
for (SymIterator lIterator = lSymTable.getSymIterator(); lIterator.hasNext(); ) { Sym lSym = lIterator.next(); ..... }
traverses all symbols recorded in the symbol table lSymTable. If SymIterator is applied to symTableRoot, all global symbols in the given program unit are traversed.
Another coding sequence
for (SymNestIterator lIterator = lSymTable.getSymIterator(); lIterator.hasNext(); ) { Sym lSym = lIterator.next(); ..... }
traverses all symbols recorded in the symbol table lSymTable and its descendent symbol tables. If SymNestIterator is applied to symTableCurrentSubp, all symbols local to the current subprogram are traversed. If SymNestIterator is applied to symTableRoot, all symbols recorded in the given program unit except constants in symTableConst are traversed.
The next coding sequence
for (SymTableIterator lTableIterator = lSymTable.getSymTableIterator(); lTableIterator.hasNext(); ) { SymTable lSymTableCurr = lTableIterator.next(); for (SymIterator lSymIterator = lSymTableCurr.getSymIterator(); lSymIterator.hasNext(); ) { Sym lSym = lSymIterator.next(); ...... } }
will traverse all symbol tables under lSymTable and all symbols in the traversed symbol tables examining attributes of the traversed symbol tables.
Construction of Sym and HIR are done by factory methods, that is, objects of Sym and HIR are not usually constructed by invoking constructors directly but by invoking factory methods. The factory methods of Sym are described in the Sym interface (Sym.java). Examples of the usage of factory methods are shown in SimpleMain.java.
A subprogram symbol can be constructed in such coding as
Subp lSubp = symRoot.sym.defineSubp("sub1".intern(), symRoot.sym.typeInt);
where, the first parameter specifies subprogram name and the second parameter specifies return value type. symRoot refers to SymRoot object. If symRoot is not accessible directly but hirRoot is accessible, replace symRoot in the above coding by hirRoot.symRoot. String parameters for Sym, HIR methods should have .intern() in order to make unique String object that can be compared by "==" operator instead of the "equals" method. All String objects returned by Sym, HIR methods are unique String object and need not to have .intern(). (See Sym0.java, Sym.java, HIR0.java, HIR.java.)
Similarly, a variable symbol can be constructed by
Var lVar = symRoot.defineVar("var1".intern(), symRoot.typeFloat);
Integer constant, long int constant can be made by
IntConst lIntConst1 = symRoot.sym.intConst(123, symRoot.typeInt); IntConst lLongConst1= symRoot.sym.intConst(123, symRoot.typeLong); IntConst lIntConst2 = symRoot.sym.intConst("123".intern(), symRoot.typeInt);
and floating constant can be made by
FloatConst lPai = symRoot.sym.floatConst(3.14, symRoot.typeFloat); FloatConst lDoubleConst1 = symRoot.sym.floatConst(1.2, symRoot.typeDouble);
For mode detail, see the Sym interface (Sym0.java and Sym.java).
Care should be taken in making a string constant because the representation of character string differs by language. For example, a string constant in C has trailing "\0" and may contain preceding escape character for some special characters. A string constant is recorded as a pure string (processing escape characters by makeStringBody of coins.SourceLanguage) that is language independent. To make a string for C language from the pure string, makeCstring method is provided, for Java language, makeJavaString method is provided, and so on.
All symbols are recorded in some symbol table. The interface of the symbol table is SymTable (SymTable.java). An instance of SymTable is created for each scope of symbols corresponding such language constructs as program, subprogram, struct, etc.
Several symbol tables are constructed according to the structure of given source program. At first, a global symbol table is created by initiate() of SymRoot and symbols inherent to the COINS infrastructure are recorded in it. The symbols inherent to the COINS compiler infrastructure are such ones as basic types and bool constants. Types of each source language are mapped to the corresponding types of the COINS compiler infrastructure in such way as
C int COINS int C array COINS vector Fortran INTEGER COINS int Fortran REAL COINS float
When a new scope of symbols is opened, a new symbol table is to be created and linked to ancestor symbol table that contains symbols to be inherited by the new scope (pushSymTable()). When the current scope is closed, the current symbol table is to be closed by which the ancestor symbol table becomes the current symbol table again (by using popSymTable()).
Symbols are searched in the current symbol table (symTableCurrent of SymRoot) and its ancestors in the reverse order of scope addition. The methods pushSymTable and popSymTable changes symTableCurrent when they are called. Popped symbol table is not discarded unless it is empty but made invisible for search procedures so as to make inter-procedure optimization and parallelization can be done. A symbol table usually has corresponding program construct such as subprogram and it is called as the owner of the symbol table. There are links between such constructs (owner) and corresponding symbol table to show their correspondence (getOwner). Anonymous construct (anonymous Struct, BlockStmt, etc.) may have name generated by the compiler.
Source program symbols (symbols appearing in source program) have their scope as defined by the grammar of the language. Each Struct and Union opens a new scope. Scope of constants is the entire compile unit. Scope of temporal variables generated by the compiler is the subprogram within which the temporal variables are defined.
Symbols may have indication of scope (extern, public, private, compile_unit, etc.) and variables may have indication of storage class (static, automatic, etc.). In storage allocation and symbol treatment in code generation, these indications and nesting of symbol tables should be properly treated. Care should be taken that one subprogram may have nested symbol tables. Nesting of subprograms is treated as the nesting of corresponding symbol tables.
SymRoot class is used to access Sym (symbol) information and information prepared by other classes such as IoRoot, HIR, etc. All Sym objects contain a reference to the SymRoot object from which symbol information and methods can be quickly accessed. The SymRoot object contains a reference to IoRoot. Thus, every Sym objects can access input/output methods, too. SymRoot contains SymTable references:
symTableRoot // Root of SymTable. symTableConst // Constant table. symTableUnique // SymTable that contains generated unique name. symTableCurrent // Referes to the symbol table for subprogram, // etc. under construction or under processing. symTableCurrentSubp // Symbol table of current subprogram. Some kinds of // symbols (Type, Label, tmporal variable, etc.) are // registered not in symTableCurrent // but in symTableCurrentSubp.
The subprogram under construction or processing is recorded in subpCurrent of SymRoot.
In parsing, flow analysis, optimization, code generation, etc., it is strongly recommended to set SymTableCurrent, subpCurrent, symTableCurrentSubp as it is exemplified in SimpleMain.java.
They are used in searching/generating symbols. If new symbols are to be created in such processing, SymTableCurrent and subpCurrent should be set properly. Several methods such as sym/pushSymTable, sym/popSymTable, aflow/subpFlow keeps such consistency automatically as it is described in explanations of these methods.
pushSymTalbe/popSymTable methods should be used in parsers but should not be used in optimization, code generation, etc. because pushSymTable creates a new SymTable corresponding to a new scope in input source program.
SymRoot contains type symbols of base types such as typeBool, typeChar, typeInt, etc. as predefined symbols.
Symbols such as variables, subprograms, constants have type. The type is represented by a type symbol. Types used in HIR are classified into base type and introduced type.
Base type (type intrinsic to HIR): int represented by typeInt of SymRoot float represented by typeFloat of SymRoot .... (see SymRoot) Introduced type (type introduced by the input program): pointer type represented by the class PointerType vector type represented by the class VectorType structure type represented by the class StructType union type represented by the class UnionType enumeration type represented by the class EnumType subprogram type represented by the class SubpType defined type represented by the class DefinedType
A pointer type is defined by pointer indication (* in C) and
the type of the target of the pointer.
A vector type is derived from element type by specifying the type
of vector element and the number of elements in the vector.
A structure type is defined by specifying its elements
that may represent object different with each other.
A union type is defined by specifying overlaid elements.
A subprogram type is defined by specifying type of parameters
and the type of return value.
An enumeration type is defined by specifying enumeration
literals representing some integer value.
Defined types may be a renaming of base type or a compound
type that is derived from base type or defined type.
Type symbols are created by factory methods in Sym interface. The factory methods for type creation are baseType, pointerType, vectorType, structType, unionType, enumType, subpType and definedType.
The structure of SubpType, StructType, UnionType, and EnumType are a little complicated. It is not recommended to use subpType directly but it is recommended to use defineSubp of Sym interface that defines both subprogram symbol and subprogram type. For making type instance of StructType, UnionType, or EnumType, read carefully the explanation of the corresponding method structType, unionType, or enumType of Sym interface.
In order to define a subprogram symbol,
make the subprogram symbol by defineSubp(...), add formal parameters by addParam(....), close the subprogram declaration by closeSubpHeader(....)
in such a way as
Subp lSubp = symRoot.sym.defineSubp("name".intern(), returnType); SymTable lSubpSymTable = symRoot.symTableCurrent.pushSymTable(lSubp); lSubp.addParam(param1); lSubp.addParam(param2); .... lSubp.setOptionalParam(); // Not required if it has no optional parameter. lSubp.closeSubpHeader(); Var lVar1 = lSubpSymTable.defineVar("a".intern(), symRoot.typeInt); .... symRoot.symTableCurrent.popSymTable();
Above procedure will make a subprogram object with
inevitable fields such as parameter list,
return value type, and subprogram type.
closeSubpHeader() will make subprogram type of the form
<SUBP < paramType_1 paramType_2 ... > returnValueType optionalParam >
where, paramType_1, paramType_2, ... are parameter type,
returnValueType is return value type,
optionalParam is true or false depending on whether optional
parameter ("..." in C) is specified or not.
pushSymTable(lSubp) makes new symbol table owned by the subprogram
lSubp and makes it symTableCurrent. lSubpSymTable.defineVar( .... )
defines a variable as an element of lSubpSymTable. popSymTable()
makes lSubpSymTable invisible form symbol serach procedure and makes
the previous symbol table as symTableCurrent.
To make a structure type, structType method is provided in Sym
interface. Users may understand how to use it by following example:
As for
struct listNode { int nodeValue; struct listNode *next; } listAnchor, listNode1;
following coding will make corresponding StructType.
Sym lTag = symRoot.symTableCurrent.generateTag("listNode".intern()); StructType lListStruct = sym.structType(null, lTag); // Incomplete type. PointerType lListPtrType = sym.pointerType(lListStruct); PointerType lIntPtrType = sym.pointerType(symRoot.typeInt); symRoot.symTableCurrent.pushSymTable(lListStruct); Elem lValue = sym.defineElem("nodeValue".intern(), symRoot.typeInt); Elem lNext = sym.defineElem("next".intern(), lListPtrType); lListStruct.addElem(lValue); lListStruct.addElem(lNext); lListStruct.finishStructType(true); symRoot.symTableCurrent.popSymTable();
Methods are provided to get information of introduced types:
getSizeValue of Sym interface getPointedValue of Sym interface getElemCount of VectorType interface getElemList of StructType interface getParameterTypeList of SubpType interface ....
In compilers, temporal variables are often required to be generated for optimization, code generation, etc. A method
public Var generateVar( Type pType );
is provided in the SymTable interface to generate a temporal variable in the symbol table local to the current subprogram (symTableCurrentSubp).
In order to generate labels, a method
public Label generateLabel();
is provided in the SymTable interface. It generates a label in the symbol table local to the current subprogram (symTableCurrentSubp).
The method toString() gives the representation of a symbol in text form. It may be used for debug purpose, etc. toStringShort() shows short description and toStrindDetail() shows full description of the symbol.
HIR can be instantiated and handled mostly by using methods in HIR0 (plain HIR interface). Simple compilers can be constructed by using methods in HIR0 and Sym0 interfaces. In constructing more complicated compiler, use methods in HIR and Sym. HIR inherits HIR0 and Sym inherits Sym0. In the following explanations, HIR may be read as HIR0 in most cases.
Most of HIR constructs have correspondence to some source language constructs, e.g.
SubpDefinition - subprogram definition Stmt - statement AssignStmt - assign statement LoopStmt - loop statement BlockStmt - block statement Exp - expression VarNode - variable ConstNode - constant
Subcomponent of HIR constructs can be get by methods provided in each HIR subclass (interface that extends HIR). For example,
getLeftSide(), getRightSide() of AssignStmt getIfCondition(), getThenPart(), getElsePart() of IfStmt getLoopStartCondition(), getLoopBodyPart() of ForStmt, WhileStmt, UntilStmt that extend LoopStmt getExp1(), getExp2() of Exp getSymNodeSym() of VarNode, ElemNode, ConstNode that extend SymNode
As for detail, see corresponding interfaces that extend HIR.
The subcomponents can be get also by specifying child number by getChild1(), getChild2(), and getChild(int pChildNumber). In such coding, exact knowledge of HIR data structure is required. getChildCount of IR interface gives the number of children of HIR nodes. (getChild1() and getChild2() have less overhead than getChild(1) and getChild(2).)
All HIR nodes have type attribute. It can be get by the method getType. Some HIR nodes may have flags set during parsing, analysis, etc. The method getFlag(int pFlagNumber) returns the status of the flag indicated by pFlagNumber.
The method toString() gives the representation of an HIR node in text form. It may be used for debug purpose, etc. toStringShort() shows short description and toStrindDetail() shows full description of the node.
The method print(....) of HIR prints the subtree stemming from the specified node, that is, all subtrees of the specified node are printed recursively.
HIR nodes can be constructed by methods defined in HIR interface. Leafs of HIR tree are symbol node, list, etc. In HIR, symbols are represented by symbol nodes having reference to some symbol table entry such as variable and subprogram.
A Symbol node can be generated by factory methods of HIR.
VarNode lVarNode1 = hirRoot.hir.varNode(lVar1); SubpNode lSubpNode1 = hirRoot.hir.subpNode(lSubp); ConstNode lConstNode1 = hirRoot.hir.constNode(lIntConst1);
will instantiate VarNode, SubpNode, ConstNode, each respectively. hirRoot.hir, hirRoot.symRoot.sym, etc. may be shortened by local declarations
HIR hir = hirRoot.hir; Sym sym = hirRoot.symRoot.sym;
Arithmetic expressions can be built by such coding as
Exp lExp1 = hir.exp(HIR.OP_ADD, lVarNode1, lConstNode1); Exp lExp2 = hir.exp(HIR.OP_MULT, lExp1, hir.varNode(lVar2));
Assign-statement, if-statement, etc. are built by
Stmt lAssign1 = hir.assignStmt(lVarNode1, lExp1); Stmt lAssign2 = hir.assignStmt(lVarNode1, lExp2); Stmt lIf1 = hir.ifStmt(hir.exp(HIR.OP_CMP_EQ, lExp1, hir.constNode(0, symRoot.typeInt)), lAssign1, lAssign2);
etc.
HIR tree is usually constructed in bottom up manner starting from leafs and combining them as above. Top down construction is also possible by attaching a subtree (leaf node or nonleaf node) to parent tree as its child.
setChild1( IR pChild1 ), setChild2( IR pChild2 ), setChild( int pChildNumber, IR pChild )
of IR interface are available for such construction. The top down construction requires knowledge of detailed structure of HIR tree. Recommended way is bottom up construction by using the prepared factory methods.
In some cases, strict bottom up construction is difficult. For example, in the construction of block statement and subprogram definition, most of their children are not known at first. Several methods are provided to construct such subtrees. They are explained in the next section.
Block statement can be constructed by a statement sequence such as
BlockStmt lBlockStmt = hir.blockStmt(null); lBlockStmt.addLastStmt(lAssign1); lBlockStmt.addLastStmt(lIf1); ....
(See HIR, BlockStmt in coins.ir.hir.)
Subprogram can be constructed by such statement sequence as
Subp lMain = symRoot.sym.defineSubp("main".intern(), symRoot.typeInt); SymTable lSymTable = symRoot.symTableRoot.pushSymTable(lMain); lMain.closeSubpHeader(); SubpDefinition lMainDef = hir.subpDefinition(lMain, lSymTable); BlockStmt lBlockStmt = hir.blockStmt(null); lMainDef.setHirBody(lBlockStmt); .... lBlockStmt.addLastStmt(lAssign1); .... symRoot.symTableCurrent.popSymTable();
(In case of prototype declaration, use closeSubpPrototype instead of closeSubpHeader. See HIR, SubpDefinition, Subp, SimpleMain.java, etc.)
IrList, HirList can be constructed by such statement sequence as
HirList lList = hir.irList(); lList.add(....); ....
(See HIR in coins.ir.hir, IrList in coins.ir.)
An example of HIR generation is shown by SimpleMain.java. Readers can see how to construct symbol table and HIR tree of a program. It may be useful in coding new parser.
It is possible to build Sym objects and HIR objects by invoking constructors of VarImpl, SubpImpl, VarNodeImpl, ConstNodeImpl, AssignStmtImpl, IfStmtImpl, etc. but such coding is not recommended. Such coding may cause many errors because there are some hidden parameters supplied by factory methods and there are some preparatory methods to be applied to parameters.
It should be noted that the structure of HIR is tree. Every nodes in the HIR tree should be created newly and should not be shared because sharing of nodes violates the data structure rule of tree. If a subtree same as some subtree X is required, X should be copied by the method
X.copyWithOperands()
if X is an expression or
X.copyWithOperandsChangingLabels()
if X is a statement that may include label definitions. The HIR method "isTree" checks whether the rule of tree structure is violated or not. The method "isTree" is invoked automatically if debug-print level of HIR is greater than 1 in Driver.java.
When entire HIR subtree of a subprogram is constructed, finishHir() should be called in such way as
lSubpDefinition.finishHir();
where lSubpDefinition represents SubpDefinition node of the subprogram. The method finishHir() does such operations as giving index number to HIR nodes under the subtree, checking tree structure conformance, certificating getHirPosition() for labels, and so on. When the HIR subtree of a subprogram was changed in optimization and parallelization, then finishHir() should also be called for the subtree. This method is not required to call for each modification of statements ans expressions of SubpDefinition but at the end of creation or transformation of the entire SubpDefinition subtree.
Syntactic structure of HIR is shown in HIR0.java and in HIR.java as comment lines. Nonterminals that do not derive to null are indispensable items. Nonterminals that derive to null are optional items. There may be some exceptional nonterminal that derives to null but represents indispensable item. Such case may happen in avoiding BNF productions to become too much verbose but such case can be clearly discriminated by considering semantics.
Under the directory "test" there are many small programs written to test the COINS compiler infrastructure. The directory "test/c" contains C test program suite composed of more than 1000 small C programs which are available to test C front-end and basic features of the COINS compiler infrastructure. The C test programs are grouped under many sub-directories such as Assign, Exp, If, Loop, etc. (See "README.c.txt", "README.c-result-may-differ.txt", "README.c-not-for-auto-test.txt" under the "test" directory.)
The C test program suite also contains expected execution results corresponding to each test program so that automatic test is possible by compiling and executing the test programs and comparing the result of execution for them. There are test programs that are not suitable for execution test, for example, programs to test syntax error detection, programs to test implementation dependent features, and so on. Such test programs are placed under the sub-directories named "test/c/unsupported" and "test/c-result-may-differ".
When some component of the COINS compiler infrastructure is modified or added, it is recommended to test whether it is correctly executed or not by using the test suite.
The test script
test/c/testdriver.sh
is available to do automatic test for the C test program suite. It can automatically compile and execute the programs in the test program suite and compare the results with the corresponding expected results. Following is an example of command sequence to do such automatic test.
cd ./classes -- Type at the root of the COINS compiler infrastructure. ../test/c/testdriver.sh -v ../test/c/*/*.c ../test/c/testdriver.sh -v ../test/c/*/*/*.c
The first and the second invocations of "testdriver.sh" will do test by using test programs under the first level and the second level sub-directories, respectively. The result of the test will be shown by files which will be located under
testdriver-yymmdd-hhmmss
that is a directory created during the test.
If "Arg list too long" message is issued in your environment by the command
../test/c/testdriver.sh -v ../test/c/*/*.c
then make a temporal directory such as "test/c2" and move several sub-directories such as TestFnami2, WhiteBox1, WhiteBox2 (that contain many files) to the temporal directory and execute
../test/c/testdriver.sh -v ../test/c2/*/*.c
as additional command.
There is a command line
if ! java coins.driver.Driver -coins:${TARGET}preprocessor=\ 'cpp -I../lang/c/include' -S -o $CCCOUT $i &>$CCCLOG
in "testdriver.sh". You can change compile option by changing this line in such way as
if ! java coins.driver.Driver -coins:${TARGET},hirOpt=cse,preprocessor=\ 'cpp -I../lang/c/include' -S -o $CCCOUT $i &>$CCCLOG
You can do automatic test by using test programs under some sub-directory only. For example, if you want to do test by using test programs under Loop sub-directory only, give following command:
../test/c/testdriver.sh -v ../test/c/Loop/*.c
Some test programs under sub-directories "test/c/unsupported" and "test/c-result-may-differ" will cause error but it may be normal because each of them may be a test program to cause error. Result of these test programs should be examined individually.
Some test programs may require further investigation even if "OK" sign is issued for them. For example, "test/c/Opt", "test/c/OptAdd" and "test/c/TestSsa" contain test programs for optimization and it is required to examine object codes generated.
If test is to be done on x86-cygwin, use "test/c/testdriverw.sh" instead of "testdriver.sh". Its usage is the same as the "testdriver.sh" but it is required to prepare expected results on x86 machine as explained in the next section.
Note.
Target machine can be changed by command option in such a way as
../test/c/testdriver.sh -v -t x86-cygwin ../test/c/Loop/*.c
but this command option is not yet reliable and in some environment, this may not correctly work. It is better to use the test script
test/c/testdriverw.sh
for x86-cygwin.
As for other machine, please adjust the "testdriver.sh" to the machine.
Currently, the expected results of the test programs are prepared by using gcc compiler on Sparc machine. You can renew the expected results by the following command sequence:
cd ./classes ../test/c/testprepare.sh ../test/c/*/*.c ../test/c/testprepare.sh ../test/c/*/*/*.c
When you added or modified test programs, you should also renew the expected results of the test programs added or modified.
If you want to do test on a machine other than Sparc, you should renew the expected results by using gcc compiler or some other existing compiler on the machine.
If test is to be done on x86-cygwin, use "test/c/testpreparew.sh" instead of "testprepare.sh". Its usage is the same as the "testdprepare.sh".
As for other machine, please adjust the "testprepare.sh" to the machine.
CoVis is the visualization tools for source programs, HIRs, LIRs, and control flow graphs. An example is shown in Fig.1-2.
In the figure, the control flow graph (upper left), the HIR representation (upper right), and the source program (lower right) of the selected function are shown. The selected basic block is colored red, and the corresponding parts of the HIR and the source are colored blue. The detailed information of the selected basic block is shown in the lower left.
The intermediate representation can be selected by clicking one of the four buttons: Generated HIR (generated by the front end), Optimized HIR (by HIR optimization), Generated LIR (generated by HIR-to-LIR translation), and Optimized LIR (by SSA optimization).
By the coins compiler option
-coins:debuginfo,snapshot
the coins internal representation is translated to the XML file. For example, the command
java coins-driver -coins:debuginfo,snapshot -S source.c
will generate the XML file "source.xml".
java -cp CoVis/classes covis.CoVis
or run CoVis and open the XML file by
java -cp CoVis/classes covis.CoVis source.xml
or run CoVis and open the sample XML file by
ant sample
If you get the Exception "java.lang.UnsupportedClassVersionError" when you open the XML file, recompile the CoVis and grappa source files.
The trace of the code generation process can be viewed by a browser. An example is shown in Fig.1-3.
The left column of the figure shows the phase when the traced data obtained. By clicking "[<<]" or "[>>]", the previous or the next information of the same basic block can be viewed.
The traced data can be generated by the compiler option:
-coins:debuginfo,trace=xxx
and the data can be formatted as a html file by the perl script trace2html.pl.
java coins.driver.Driver -coins:debuginfo,... > trace.java perl trace2html.pl -o trace -c trace.java
The trace options are:
output the LIR at the entry and the exit of the backend.
output the detailed information of code generation process.
output the LIR before and after the phase phasenames where phasenames is the list of the following names:
ToMachineCode, EarlyRewriting, LateRewriting, InstSel, ConvToAsm, IntroVirReg, JumpCanon, JumpOpt, LoopInversion, SimpleOpt, LiveRange, RegisterAllocation


Pmw.Dialog() - toplevel window with button box
A dialog is a toplevel window composed of a button box and a child site area. The child site area can be used to specialise the megawidget by creating other widgets within it. This can be done by using this class directly or by deriving from it.
activate()
. The default is None.
If the value of command is not callable, the default behaviour
is to deactivate the window if it is active, or withdraw the
window if it is not active. If it is deactivated, deactivate()
is called with the button name or None as described above. The default is None.
deactivate()
. The default is None.
activate()
method to control whether the
window is made transient during modal dialogs. See the
activate()
method. The default is 'parent'.
(hull_borderwidth = 1, hull_relief = 'raised')
. By default, this component is a Pmw.ButtonBox.
(borderwidth = 1, relief = 'raised')
. By default, this component is a Tkinter.Frame.
component('dialogchildsite')
.
index()
method.
class Demo: def __init__(self, parent): # Create two buttons to launch the dialog. w = Tkinter.Button(parent, text = 'Show application modal dialog', command = self.showAppModal) w.pack(padx = 8, pady = 8) w = Tkinter.Button(parent, text = 'Show global modal dialog', command = self.showGlobalModal) w.pack(padx = 8, pady = 8) w = Tkinter.Button(parent, text = 'Show dialog with "no grab"', command = self.showDialogNoGrab) w.pack(padx = 8, pady = 8) w = Tkinter.Button(parent, text = 'Show toplevel window which\n' + 'will not get a busy cursor', command = self.showExcludedWindow) w.pack(padx = 8, pady = 8) # Create the dialog. self.dialog = Pmw.Dialog(parent, buttons = ('OK', 'Apply', 'Cancel', 'Help'), defaultbutton = 'OK', title = 'My dialog', command = self.execute) self.dialog.withdraw() # Add some contents to the dialog. w = Tkinter.Label(self.dialog.interior(), text = 'Pmw Dialog\n(put your widgets here)', background = 'black', foreground = 'white', pady = 20) w.pack(expand = 1, fill = 'both', padx = 4, pady = 4) # Create the window excluded from showbusycursor. self.excluded = Pmw.MessageDialog(parent, title = 'I still work', message_text = 'This window will not get\n' + 'a busy cursor when modal dialogs\n' + 'are activated. In addition,\n' + 'you can still interact with\n' + 'this window when a "no grab"\n' + 'modal dialog is displayed.') self.excluded.withdraw() Pmw.setbusycursorattributes(self.excluded.component('hull'), exclude = 1) def showAppModal(self): self.dialog.activate(geometry = 'centerscreenalways') def showGlobalModal(self): self.dialog.activate(globalMode = 1) def showDialogNoGrab(self): self.dialog.activate(globalMode = 'nograb') def showExcludedWindow(self): self.excluded.show() def execute(self, result): print 'You clicked on', result if result not in ('Apply', 'Help'): self.dialog.deactivate(result)
Pmw 1.2 -
5 Aug 2003
- Home
Manual page last reviewed: 18 May 2002


HOME
READINGS
ABOUT
Supplementary Material
What is computation? Trishank’s book recommendations
Getting started with SQL
Complexity Science Research
Agent-Based Models
What Is Agent-Based Modeling?
NetLogo ABM System
Laying ocean cables


Jeff Bezos Donates $98.5 Million To 32 Charities That Help Homeless Families
by Cameron FrewAfter recently losing the world’s richest top spot to Bill Gates, Amazon CEO Jeff Bezos has donated $98.5 million to help the homeless.
Advertisements
The billionaire e-commerce boss launched the Bezos Day One Fund in September 2018, designed to fund organisations that help homeless families, as well as helping to provide high-quality education in low-income communities.
Last year, the fund awarded $97.5m to 24 organisations across the US. As the second round of funding kicked off on Thursday, November 21, it was announced that 32 organisations will receive a whopping $98.5m in grants.
Advertisements
The Homeless Services Network of Central Florida received the largest grant this year, with a huge $5.25m award.
Catholic Social Services Alaska, Covenant House in New York, FamilyAid Boston, Mary’s Place Seattle, MIFA in Memphis, St. Joseph Center in California, St. Stephen’s Human Services in Minneapolis, St. Vincent de Paul in Baltimore, The Road Home in Salt Lake City and The Whole Child in California all also received $5m.
Back in 2018, Bezos committed $2 billion across the Families Fund and Academies Fund – which looks to create a ‘network of new, non-profit, tier-one preschools in low-income communities,’ Bezos said at the time, as per CNBC.
So far, no grants have been announced specifically regarding education.
Advertisements
As per the Bloomberg Billionaires Index, Microsoft co-founder Gates is currently the richest man in the world, just beating out Bezos (both are listed as having a net worth of $109bn).
Gates briefly took the top spot last month when Amazon reported a 28% drop in profits the three months ending in September, however Bezos soon climbed above again.
Alas, following a $10bn cloud-computing deal with the Pentagon, Microsoft’s shares surged (while sending Amazon’s down by 2%).
Advertisements
Gates only owns around 1% of Microsoft shares. However, that equates to around $7.3bn, according to Business Insider – this gave the Microsoft figurehead the boost over Bezos, with Microsoft’s shares increasing by 48% this year.
Following Bezos’ split from his wife MacKenzie, his wealth was also took a hit. As part of their divorce settlement, she was given 19.7m shares of Amazon valued at more than $38bn.
Gates’ net worth could have reportedly been much higher over the years, but Bloomberg also noted that he has donated more than $35bn since 1994 through the Bill & Melinda Gates Foundation.
After graduating from Glasgow Caledonian University with an NCTJ and BCTJ-accredited Multimedia Journalism degree, Cameron ventured into the world of print journalism at The National, while also working as a freelance film journalist on the side, becoming an accredited Rotten Tomatoes critic in the process. He’s now left his Scottish homelands and took up residence at UNILAD as a journalist.


When you start hex_client, you’ll see a menu of actions. If this is your first time here, you will want to choose SIGNUP, which will allow you to create your wizard name. Once you have a wizard name, you can start casting spells. Each spell you cast gives you more points. You can also get points if other people support your spells at http://hex.local. As you gain more points, you will learn to cast new spells and your spells will last longer.
The hex runs a low-power web-server which hex_client connects with. You may occasionally have a connection error; usually you can just try again and it will work.
Once you are familiar with all the spells you can cast through hex_client, you may want to start casting your own spells. Please see Writing More Spells.


{% extends "ncharts/base.html" %} {% block title %}Help{% endblock %} {% block headline %}NCharts Help{% endblock %} {% block content %} NCharts is intended to be a quick-look display of a wide variety of data, not a tool for detailed analysis. The plot options will be limited to keep things simple and usable across a variety of display sizes. NCharts uses the Highcharts.com javascript plotting library which has some nice features for zooming and displaying point values.
For ISFS projects where a measurement is repeated at more than one site, with the same variable name, variables are stored in NetCDF form with a "station" dimension, and will not have a site suffix. For example: "T.2m". These variables will be provided under a "stations" tab, and checkboxes are provided for selecting one or more stations. The variable names will be shown on the plot with their station name.


001/* 002 * Copyright 2019 Perihelios LLC 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016package com.perihelios.aws.lambda.cloudwatch.dispatcher.event; 017 018import java.lang.annotation.ElementType; 019import java.lang.annotation.Retention; 020import java.lang.annotation.RetentionPolicy; 021import java.lang.annotation.Target; 022 023/** 024 * Annotates subtypes of {@link CloudWatchEvent}, identifying the text in the {@code detail-type} property of the 025 * JSON-marshalled event that should indicate the use of the subtype. 026 * <p> 027 * See the general description of {@link CloudWatchEvent} for an example of using this annotation. 028 * </p> 029 */ 030@Retention(RetentionPolicy.RUNTIME) 031@Target(ElementType.TYPE) 032public @interface DetailType { 033 /** 034 * Event detail type description, as matched against the {@code detail-type} property of the event. 035 * 036 * @return the detail type description 037 */ 038 String value(); 039}


|
||||||||||
| PREV NEXT | FRAMES NO FRAMES |
| Packages that use Filter | |
|---|---|
| org.apache.batik.bridge | Provides an API for mapping and maintaining consistency between the SVG DOM tree and the GVT tree. |
| org.apache.batik.ext.awt.image | Contains extensions to the java.awt.image package. |
| org.apache.batik.ext.awt.image.codec.imageio | |
| org.apache.batik.ext.awt.image.codec.jpeg | |
| org.apache.batik.ext.awt.image.codec.png | |
| org.apache.batik.ext.awt.image.codec.tiff | |
| org.apache.batik.ext.awt.image.renderable | |
| org.apache.batik.ext.awt.image.spi | |
| org.apache.batik.extension.svg | |
| org.apache.batik.gvt | Contains all of the interfaces for describing and painting vector graphics as Java objects. |
| org.apache.batik.gvt.filter | Contains all of the interfaces for describing a set of standard image processing filters Java objects. |
| org.apache.batik.gvt.renderer |
| Uses of Filter in org.apache.batik.bridge |
|---|
| Methods in org.apache.batik.bridge that return Filter | |
|---|---|
protected static Filter |
SVGFilterElementBridge.buildFilterPrimitives(Element filterElement,
Rectangle2D filterRegion,
Element filteredElement,
GraphicsNode filteredNode,
Filter in,
Map filterNodeMap,
BridgeContext ctx)
Builds the filter primitives of filter chain of the specified filter element and returns the last filter primitive created. |
protected static Filter |
SVGFilterElementBridge.buildLocalFilterPrimitives(Element filterElement,
Rectangle2D filterRegion,
Element filteredElement,
GraphicsNode filteredNode,
Filter in,
Map filterNodeMap,
BridgeContext ctx)
Builds the filter primitives of filter chain of the specified filter element and returns the last filter primitive created or 'in' if no filter primitive has been specified. |
static Filter |
CSSUtilities.convertFilter(Element filteredElement,
GraphicsNode filteredNode,
BridgeContext ctx)
Returns a Filter referenced by the specified element and which applies on the specified graphics node. |
protected static Filter |
SVGFilterElementBridge.createEmptyFilter(Element filterElement,
Rectangle2D filterRegion,
Element filteredElement,
GraphicsNode filteredNode,
BridgeContext ctx)
Creates a new returns a new filter that fills its output with transparent black. |
Filter |
FilterBridge.createFilter(BridgeContext ctx,
Element filterElement,
Element filteredElement,
GraphicsNode filteredNode)
Creates a Filter according to the specified parameters. |
Filter |
SVGFilterElementBridge.createFilter(BridgeContext ctx,
Element filterElement,
Element filteredElement,
GraphicsNode filteredNode)
Creates a Filter according to the specified parameters. |
Filter |
SVGFeMergeElementBridge.SVGFeMergeNodeElementBridge.createFilter(BridgeContext ctx,
Element filterElement,
Element filteredElement,
GraphicsNode filteredNode,
Filter inputFilter,
Map filterMap)
Creates a Filter according to the specified parameters. |
Filter |
FilterPrimitiveBridge.createFilter(BridgeContext ctx,
Element filterElement,
Element filteredElement,
GraphicsNode filteredNode,
Filter in,
Rectangle2D filterRegion,
Map filterMap)
Creates a Filter primitive according to the specified parameters. |
Filter |
SVGFeTurbulenceElementBridge.createFilter(BridgeContext ctx,
Element filterElement,
Element filteredElement,
GraphicsNode filteredNode,
Filter inputFilter,
Rectangle2D filterRegion,
Map filterMap)
Creates a Filter primitive according to the specified parameters. |
Filter |
SVGFeDisplacementMapElementBridge.createFilter(BridgeContext ctx,
Element filterElement,
Element filteredElement,
GraphicsNode filteredNode,
Filter inputFilter,
Rectangle2D filterRegion,
Map filterMap)
Creates a Filter primitive according to the specified parameters. |
Filter |
SVGFeColorMatrixElementBridge.createFilter(BridgeContext ctx,
Element filterElement,
Element filteredElement,
GraphicsNode filteredNode,
Filter inputFilter,
Rectangle2D filterRegion,
Map filterMap)
Creates a Filter primitive according to the specified parameters. |
Filter |
SVGFeMergeElementBridge.createFilter(BridgeContext ctx,
Element filterElement,
Element filteredElement,
GraphicsNode filteredNode,
Filter inputFilter,
Rectangle2D filterRegion,
Map filterMap)
Creates a Filter primitive according to the specified parameters. |
Filter |
SVGFeBlendElementBridge.createFilter(BridgeContext ctx,
Element filterElement,
Element filteredElement,
GraphicsNode filteredNode,
Filter inputFilter,
Rectangle2D filterRegion,
Map filterMap)
Creates a Filter primitive according to the specified parameters. |
Filter |
SVGFeOffsetElementBridge.createFilter(BridgeContext ctx,
Element filterElement,
Element filteredElement,
GraphicsNode filteredNode,
Filter inputFilter,
Rectangle2D filterRegion,
Map filterMap)
Creates a Filter primitive according to the specified parameters. |
Filter |
SVGFeDiffuseLightingElementBridge.createFilter(BridgeContext ctx,
Element filterElement,
Element filteredElement,
GraphicsNode filteredNode,
Filter inputFilter,
Rectangle2D filterRegion,
Map filterMap)
Creates a Filter primitive according to the specified parameters. |
Filter |
SVGFeGaussianBlurElementBridge.createFilter(BridgeContext ctx,
Element filterElement,
Element filteredElement,
GraphicsNode filteredNode,
Filter inputFilter,
Rectangle2D filterRegion,
Map filterMap)
Creates a Filter primitive according to the specified parameters. |
Filter |
SVGFeSpecularLightingElementBridge.createFilter(BridgeContext ctx,
Element filterElement,
Element filteredElement,
GraphicsNode filteredNode,
Filter inputFilter,
Rectangle2D filterRegion,
Map filterMap)
Creates a Filter primitive according to the specified parameters. |
Filter |
SVGFeCompositeElementBridge.createFilter(BridgeContext ctx,
Element filterElement,
Element filteredElement,
GraphicsNode filteredNode,
Filter inputFilter,
Rectangle2D filterRegion,
Map filterMap)
Creates a Filter primitive according to the specified parameters. |
Filter |
SVGFeImageElementBridge.createFilter(BridgeContext ctx,
Element filterElement,
Element filteredElement,
GraphicsNode filteredNode,
Filter inputFilter,
Rectangle2D filterRegion,
Map filterMap)
Creates a Filter primitive according to the specified parameters. |
Filter |
SVGFeConvolveMatrixElementBridge.createFilter(BridgeContext ctx,
Element filterElement,
Element filteredElement,
GraphicsNode filteredNode,
Filter inputFilter,
Rectangle2D filterRegion,
Map filterMap)
Creates a Filter primitive according to the specified parameters. |
Filter |
SVGFeFloodElementBridge.createFilter(BridgeContext ctx,
Element filterElement,
Element filteredElement,
GraphicsNode filteredNode,
Filter inputFilter,
Rectangle2D filterRegion,
Map filterMap)
Creates a Filter primitive according to the specified parameters. |
Filter |
SVGFeMorphologyElementBridge.createFilter(BridgeContext ctx,
Element filterElement,
Element filteredElement,
GraphicsNode filteredNode,
Filter inputFilter,
Rectangle2D filterRegion,
Map filterMap)
Creates a Filter primitive according to the specified parameters. |
Filter |
SVGFeComponentTransferElementBridge.createFilter(BridgeContext ctx,
Element filterElement,
Element filteredElement,
GraphicsNode filteredNode,
Filter inputFilter,
Rectangle2D filterRegion,
Map filterMap)
Creates a Filter primitive according to the specified parameters. |
Filter |
SVGFeTileElementBridge.createFilter(BridgeContext ctx,
Element filterElement,
Element filteredElement,
GraphicsNode filteredNode,
Filter inputFilter,
Rectangle2D filterRegion,
Map filterMap)
Creates a Filter primitive according to the specified parameters. |
protected static Filter |
SVGFeImageElementBridge.createRasterFeImage(BridgeContext ctx,
Rectangle2D primitiveRegion,
ParsedURL purl)
Returns a Filter that represents an raster image (JPG or PNG). |
protected static Filter |
SVGFeImageElementBridge.createSVGFeImage(BridgeContext ctx,
Rectangle2D primitiveRegion,
Element refElement,
boolean toBBoxNeeded,
Element filterElement,
GraphicsNode filteredNode)
Returns a Filter that represents a svg document or element as an image. |
protected Filter |
CursorManager.cursorHrefToFilter(Element cursorElement,
ParsedURL purl,
Point2D hotSpot)
Converts the input ParsedURL into a Filter and transforms the input hotSpot point (in image space) to cursor space |
Filter |
SVGBrokenLinkProvider.getBrokenLinkImage(Object base,
String code,
Object[] params)
This method is responsible for constructing an image that will represent the missing image in the document. |
protected static Filter |
AbstractSVGFilterPrimitiveElementBridge.getIn(Element filterElement,
Element filteredElement,
GraphicsNode filteredNode,
Filter inputFilter,
Map filterMap,
BridgeContext ctx)
Returns the input source of the specified filter primitive element defined by its 'in' attribute. |
protected static Filter |
AbstractSVGFilterPrimitiveElementBridge.getIn2(Element filterElement,
Element filteredElement,
GraphicsNode filteredNode,
Filter inputFilter,
Map filterMap,
BridgeContext ctx)
Returns the input source of the specified filter primitive element defined by its 'in2' attribute. |
| Methods in org.apache.batik.bridge with parameters of type Filter | |
|---|---|
protected static Filter |
SVGFilterElementBridge.buildFilterPrimitives(Element filterElement,
Rectangle2D filterRegion,
Element filteredElement,
GraphicsNode filteredNode,
Filter in,
Map filterNodeMap,
BridgeContext ctx)
Builds the filter primitives of filter chain of the specified filter element and returns the last filter primitive created. |
protected static Filter |
SVGFilterElementBridge.buildLocalFilterPrimitives(Element filterElement,
Rectangle2D filterRegion,
Element filteredElement,
GraphicsNode filteredNode,
Filter in,
Map filterNodeMap,
BridgeContext ctx)
Builds the filter primitives of filter chain of the specified filter element and returns the last filter primitive created or 'in' if no filter primitive has been specified. |
Filter |
SVGFeMergeElementBridge.SVGFeMergeNodeElementBridge.createFilter(BridgeContext ctx,
Element filterElement,
Element filteredElement,
GraphicsNode filteredNode,
Filter inputFilter,
Map filterMap)
Creates a Filter according to the specified parameters. |
Filter |
FilterPrimitiveBridge.createFilter(BridgeContext ctx,
Element filterElement,
Element filteredElement,
GraphicsNode filteredNode,
Filter in,
Rectangle2D filterRegion,
Map filterMap)
Creates a Filter primitive according to the specified parameters. |
Filter |
SVGFeTurbulenceElementBridge.createFilter(BridgeContext ctx,
Element filterElement,
Element filteredElement,
GraphicsNode filteredNode,
Filter inputFilter,
Rectangle2D filterRegion,
Map filterMap)
Creates a Filter primitive according to the specified parameters. |
Filter |
SVGFeDisplacementMapElementBridge.createFilter(BridgeContext ctx,
Element filterElement,
Element filteredElement,
GraphicsNode filteredNode,
Filter inputFilter,
Rectangle2D filterRegion,
Map filterMap)
Creates a Filter primitive according to the specified parameters. |
Filter |
SVGFeColorMatrixElementBridge.createFilter(BridgeContext ctx,
Element filterElement,
Element filteredElement,
GraphicsNode filteredNode,
Filter inputFilter,
Rectangle2D filterRegion,
Map filterMap)
Creates a Filter primitive according to the specified parameters. |
Filter |
SVGFeMergeElementBridge.createFilter(BridgeContext ctx,
Element filterElement,
Element filteredElement,
GraphicsNode filteredNode,
Filter inputFilter,
Rectangle2D filterRegion,
Map filterMap)
Creates a Filter primitive according to the specified parameters. |
Filter |
SVGFeBlendElementBridge.createFilter(BridgeContext ctx,
Element filterElement,
Element filteredElement,
GraphicsNode filteredNode,
Filter inputFilter,
Rectangle2D filterRegion,
Map filterMap)
Creates a Filter primitive according to the specified parameters. |
Filter |
SVGFeOffsetElementBridge.createFilter(BridgeContext ctx,
Element filterElement,
Element filteredElement,
GraphicsNode filteredNode,
Filter inputFilter,
Rectangle2D filterRegion,
Map filterMap)
Creates a Filter primitive according to the specified parameters. |
Filter |
SVGFeDiffuseLightingElementBridge.createFilter(BridgeContext ctx,
Element filterElement,
Element filteredElement,
GraphicsNode filteredNode,
Filter inputFilter,
Rectangle2D filterRegion,
Map filterMap)
Creates a Filter primitive according to the specified parameters. |
Filter |
SVGFeGaussianBlurElementBridge.createFilter(BridgeContext ctx,
Element filterElement,
Element filteredElement,
GraphicsNode filteredNode,
Filter inputFilter,
Rectangle2D filterRegion,
Map filterMap)
Creates a Filter primitive according to the specified parameters. |
Filter |
SVGFeSpecularLightingElementBridge.createFilter(BridgeContext ctx,
Element filterElement,
Element filteredElement,
GraphicsNode filteredNode,
Filter inputFilter,
Rectangle2D filterRegion,
Map filterMap)
Creates a Filter primitive according to the specified parameters. |
Filter |
SVGFeCompositeElementBridge.createFilter(BridgeContext ctx,
Element filterElement,
Element filteredElement,
GraphicsNode filteredNode,
Filter inputFilter,
Rectangle2D filterRegion,
Map filterMap)
Creates a Filter primitive according to the specified parameters. |
Filter |
SVGFeImageElementBridge.createFilter(BridgeContext ctx,
Element filterElement,
Element filteredElement,
GraphicsNode filteredNode,
Filter inputFilter,
Rectangle2D filterRegion,
Map filterMap)
Creates a Filter primitive according to the specified parameters. |
Filter |
SVGFeConvolveMatrixElementBridge.createFilter(BridgeContext ctx,
Element filterElement,
Element filteredElement,
GraphicsNode filteredNode,
Filter inputFilter,
Rectangle2D filterRegion,
Map filterMap)
Creates a Filter primitive according to the specified parameters. |
Filter |
SVGFeFloodElementBridge.createFilter(BridgeContext ctx,
Element filterElement,
Element filteredElement,
GraphicsNode filteredNode,
Filter inputFilter,
Rectangle2D filterRegion,
Map filterMap)
Creates a Filter primitive according to the specified parameters. |
Filter |
SVGFeMorphologyElementBridge.createFilter(BridgeContext ctx,
Element filterElement,
Element filteredElement,
GraphicsNode filteredNode,
Filter inputFilter,
Rectangle2D filterRegion,
Map filterMap)
Creates a Filter primitive according to the specified parameters. |
Filter |
SVGFeComponentTransferElementBridge.createFilter(BridgeContext ctx,
Element filterElement,
Element filteredElement,
GraphicsNode filteredNode,
Filter inputFilter,
Rectangle2D filterRegion,
Map filterMap)
Creates a Filter primitive according to the specified parameters. |
Filter |
SVGFeTileElementBridge.createFilter(BridgeContext ctx,
Element filterElement,
Element filteredElement,
GraphicsNode filteredNode,
Filter inputFilter,
Rectangle2D filterRegion,
Map filterMap)
Creates a Filter primitive according to the specified parameters. |
protected GraphicsNode |
SVGImageElementBridge.createRasterImageNode(BridgeContext ctx,
Element e,
Filter img,
ParsedURL purl)
Returns a GraphicsNode that represents an raster image in JPEG or PNG format. |
protected static List |
SVGFeMergeElementBridge.extractFeMergeNode(Element filterElement,
Element filteredElement,
GraphicsNode filteredNode,
Filter inputFilter,
Map filterMap,
BridgeContext ctx)
Returns a list of Filter objects that represents the feMergeNode of the specified feMerge filter element. |
protected static Filter |
AbstractSVGFilterPrimitiveElementBridge.getIn(Element filterElement,
Element filteredElement,
GraphicsNode filteredNode,
Filter inputFilter,
Map filterMap,
BridgeContext ctx)
Returns the input source of the specified filter primitive element defined by its 'in' attribute. |
protected static Filter |
AbstractSVGFilterPrimitiveElementBridge.getIn2(Element filterElement,
Element filteredElement,
GraphicsNode filteredNode,
Filter inputFilter,
Map filterMap,
BridgeContext ctx)
Returns the input source of the specified filter primitive element defined by its 'in2' attribute. |
protected static void |
AbstractSVGFilterPrimitiveElementBridge.handleColorInterpolationFilters(Filter filter,
Element filterElement)
Handles the 'color-interpolation-filters' CSS property. |
protected static void |
AbstractSVGFilterPrimitiveElementBridge.updateFilterMap(Element filterElement,
Filter filter,
Map filterMap)
Updates the filterMap according to the specified parameters. |
| Uses of Filter in org.apache.batik.ext.awt.image |
|---|
| Methods in org.apache.batik.ext.awt.image that return Filter | |
|---|---|
Filter |
URLImageCache.request(ParsedURL purl)
If this returns null then you are now 'on the hook'. |
| Methods in org.apache.batik.ext.awt.image with parameters of type Filter | |
|---|---|
void |
URLImageCache.put(ParsedURL purl,
Filter filt)
Associate bi with purl. |
| Uses of Filter in org.apache.batik.ext.awt.image.codec.imageio |
|---|
| Methods in org.apache.batik.ext.awt.image.codec.imageio that return Filter | |
|---|---|
Filter |
AbstractImageIORegistryEntry.handleStream(InputStream inIS,
ParsedURL origURL,
boolean needRawData)
Decode the Stream into a RenderableImage |
| Uses of Filter in org.apache.batik.ext.awt.image.codec.jpeg |
|---|
| Methods in org.apache.batik.ext.awt.image.codec.jpeg that return Filter | |
|---|---|
Filter |
JPEGRegistryEntry.handleStream(InputStream inIS,
ParsedURL origURL,
boolean needRawData)
Decode the Stream into a RenderableImage |
| Uses of Filter in org.apache.batik.ext.awt.image.codec.png |
|---|
| Methods in org.apache.batik.ext.awt.image.codec.png that return Filter | |
|---|---|
Filter |
PNGRegistryEntry.handleStream(InputStream inIS,
ParsedURL origURL,
boolean needRawData)
Decode the Stream into a RenderableImage |
| Uses of Filter in org.apache.batik.ext.awt.image.codec.tiff |
|---|
| Methods in org.apache.batik.ext.awt.image.codec.tiff that return Filter | |
|---|---|
Filter |
TIFFRegistryEntry.handleStream(InputStream inIS,
ParsedURL origURL,
boolean needRawData)
Decode the Stream into a RenderableImage |
| Uses of Filter in org.apache.batik.ext.awt.image.renderable |
|---|
| Subinterfaces of Filter in org.apache.batik.ext.awt.image.renderable | |
|---|---|
interface |
AffineRable
Adjusts the input images coordinate system by a general Affine transform |
interface |
ClipRable
Implements a clip operation. |
interface |
ColorMatrixRable
Defines the interface expected from a color matrix operation |
interface |
ComponentTransferRable
Defines the interface expected from a component transfer operation. |
interface |
CompositeRable
Composites a list of images according to a single composite rule. |
interface |
ConvolveMatrixRable
Convolves an image with a convolution matrix. |
interface |
DiffuseLightingRable
This filter primitive lights an image using the alpha channel as a bump map. |
interface |
DisplacementMapRable
Implements a DisplacementMap operation, which takes pixel values from another image to spatially displace the input image |
interface |
FilterChainRable
Implements a filter operation. |
interface |
FilterColorInterpolation
This is an extension of our Filter interface that adds support for a color-interpolation specification which indicates what colorspace the operation should take place in. |
interface |
FilterResRable
Interface for implementing filter resolution. |
interface |
FloodRable
Fills the input image with a given paint |
interface |
GaussianBlurRable
Implements a GaussianBlur operation, where the blur size is defined by standard deviations along the x and y axis. |
interface |
MorphologyRable
Implements a Morphology operation, where the kernel size is defined by radius along the x and y axis. |
interface |
OffsetRable
Adjusts the input images coordinate system by dx, dy. |
interface |
PadRable
Pads image to the given Rectangle (the rect may be smaller than the image in which case this is actually a crop). |
interface |
SpecularLightingRable
This filter follows the specification of the feSpecularLighting filter in the SVG 1.0 specification. |
interface |
TileRable
A renderable that can tile its source into the tile region. |
interface |
TurbulenceRable
Creates a sourceless image from a turbulence function. |
| Classes in org.apache.batik.ext.awt.image.renderable that implement Filter | |
|---|---|
class |
AbstractColorInterpolationRable
This is an abstract base class that adds the ability to specify the Color Space that the operation should take place in (linear sRGB or gamma corrected sRBG). |
class |
AbstractRable
This is an abstract base class that takes care of most of the normal issues surrounding the implementation of the RenderableImage interface. |
class |
AffineRable8Bit
Concrete implementation of the AffineRable interface. |
class |
ClipRable8Bit
ClipRable implementation |
class |
ColorMatrixRable8Bit
Implements the interface expected from a color matrix operation |
class |
ComponentTransferRable8Bit
This class implements the interface expected from a component transfer operation. |
class |
CompositeRable8Bit
Composites a list of images according to a single composite rule. |
class |
ConvolveMatrixRable8Bit
Convolves an image with a convolution matrix. |
class |
DeferRable
This class allows for the return of a proxy object quickly, while a heavy weight object is constrcuted in a background Thread. |
class |
DiffuseLightingRable8Bit
Implementation of the DiffuseLightRable interface. |
class |
DisplacementMapRable8Bit
Implements a DisplacementMap operation, which takes pixel values from another image to spatially displace the input image |
class |
FilterAlphaRable
FilterAlphaRable implementation. |
class |
FilterAsAlphaRable
FilterAsAlphaRable implementation. |
class |
FilterChainRable8Bit
Implements a filter chain. |
class |
FilterResRable8Bit
Interface for implementing filter resolution. |
class |
FloodRable8Bit
Concrete implementation of the FloodRable interface. |
class |
GaussianBlurRable8Bit
GaussianBlurRable implementation |
class |
MorphologyRable8Bit
Implements a Morphology operation, where the kernel size is defined by radius along the x and y axis. |
class |
PadRable8Bit
Concrete implementation of the PadRable interface. |
class |
ProfileRable
Implements the interface expected from a color matrix operation |
class |
RedRable
RasterRable This is used to wrap a Rendered Image back into the RenderableImage world. |
class |
SpecularLightingRable8Bit
Implementation of the SpecularLightRable interface. |
class |
TileRable8Bit
8 bit TileRable implementation |
class |
TurbulenceRable8Bit
Creates a sourceless image from a turbulence function. |
| Methods in org.apache.batik.ext.awt.image.renderable that return Filter | |
|---|---|
Filter |
PadRable.getSource()
Returns the source to be padded |
Filter |
OffsetRable.getSource()
Returns the source to be offset. |
Filter |
FilterResRable8Bit.getSource()
Returns the source to be cropped. |
Filter |
FilterChainRable8Bit.getSource()
Returns the source of the chain. |
Filter |
ProfileRable.getSource()
Returns the source of the blur operation |
Filter |
FilterResRable.getSource()
Returns the source to be cropped. |
Filter |
ComponentTransferRable8Bit.getSource()
Returns the source of the blur operation |
Filter |
TileRable.getSource()
Return's the tile source (the tile content used to fill the tile region. |
Filter |
PadRable8Bit.getSource()
Returns the source to be affine. |
Filter |
ColorMatrixRable8Bit.getSource()
Returns the source of the blur operation |
Filter |
FilterChainRable.getSource()
Returns this filter's source. |
Filter |
ClipRable.getSource()
This returns the current image being clipped by the clip node. |
Filter |
MorphologyRable8Bit.getSource()
Returns the source to be offset. |
Filter |
GaussianBlurRable8Bit.getSource()
Returns the source of the blur operation |
Filter |
ConvolveMatrixRable.getSource()
Returns the source to be Convolved |
Filter |
AffineRable8Bit.getSource()
Returns the source to be affine. |
Filter |
FilterAsAlphaRable.getSource()
|
Filter |
ComponentTransferRable.getSource()
Returns the source to be offset. |
Filter |
ColorMatrixRable.getSource()
Returns the source to be offset. |
Filter |
DiffuseLightingRable8Bit.getSource()
Returns the source to be filtered |
Filter |
GaussianBlurRable.getSource()
Returns the source to be Blurred |
Filter |
MorphologyRable.getSource()
Returns the source to be offset. |
Filter |
SpecularLightingRable8Bit.getSource()
Returns the source to be filtered |
Filter |
FilterAlphaRable.getSource()
|
Filter |
AffineRable.getSource()
Returns the source to be offset. |
Filter |
DeferRable.getSource()
Key method that blocks if the src has not yet been provided. |
Filter |
TileRable8Bit.getSource()
Return's the tile source |
Filter |
ClipRable8Bit.getSource()
This returns the current image being masked by the mask node. |
Filter |
DiffuseLightingRable.getSource()
Returns the source to be filtered |
Filter |
ConvolveMatrixRable8Bit.getSource()
|
Filter |
SpecularLightingRable.getSource()
Returns the source to be filtered |
| Methods in org.apache.batik.ext.awt.image.renderable with parameters of type Filter | |
|---|---|
protected void |
AbstractRable.init(Filter src)
Initialize an Abstract Rable from src, bounds and props. |
protected void |
AbstractRable.init(Filter src,
Map props)
Initialize an Abstract Rable from src, bounds and props. |
void |
PadRable.setSource(Filter src)
Sets the source to be padded |
void |
OffsetRable.setSource(Filter src)
Sets the source to be offset. |
void |
FilterResRable8Bit.setSource(Filter src)
Sets the source to be cropped |
void |
FilterChainRable8Bit.setSource(Filter chainSource)
Sets the source to be src. |
void |
ProfileRable.setSource(Filter src)
Sets the source of the blur operation |
void |
FilterResRable.setSource(Filter src)
Sets the source to be cropped |
void |
ComponentTransferRable8Bit.setSource(Filter src)
Sets the source of the blur operation |
void |
TileRable.setSource(Filter source)
Sets the filter source (the tile content used to fill the tile region. |
void |
PadRable8Bit.setSource(Filter src)
Sets the source to be affine. |
void |
ColorMatrixRable8Bit.setSource(Filter src)
Sets the source of the blur operation |
void |
FilterChainRable.setSource(Filter src)
Sets the source for this chain. |
void |
ClipRable.setSource(Filter src)
The source to be clipped by the outline of the clip node. |
void |
MorphologyRable8Bit.setSource(Filter src)
Sets the source to be offset. |
void |
GaussianBlurRable8Bit.setSource(Filter src)
Sets the source of the blur operation |
void |
ConvolveMatrixRable.setSource(Filter src)
Sets the source to be Convolved |
void |
AffineRable8Bit.setSource(Filter src)
Sets the source to be affine. |
void |
ComponentTransferRable.setSource(Filter src)
Sets the source to be offset. |
void |
ColorMatrixRable.setSource(Filter src)
Sets the source to be offset. |
void |
DiffuseLightingRable8Bit.setSource(Filter src)
Sets the source to be filtered |
void |
GaussianBlurRable.setSource(Filter src)
Sets the source to be blurred. |
void |
MorphologyRable.setSource(Filter src)
Sets the source to be offset. |
void |
SpecularLightingRable8Bit.setSource(Filter src)
Sets the source to be filtered |
void |
AffineRable.setSource(Filter src)
Sets the source to be offset. |
void |
DeferRable.setSource(Filter src)
Key method that sets the src. |
void |
TileRable8Bit.setSource(Filter src)
Sets the filter source |
void |
ClipRable8Bit.setSource(Filter src)
The source to be masked by the mask node. |
void |
DiffuseLightingRable.setSource(Filter src)
Sets the source to be filtered |
void |
ConvolveMatrixRable8Bit.setSource(Filter src)
|
void |
SpecularLightingRable.setSource(Filter src)
Sets the source to be filtered |
| Constructors in org.apache.batik.ext.awt.image.renderable with parameters of type Filter | |
|---|---|
AbstractColorInterpolationRable(Filter src)
Construct an Abstract Rable from src. |
|
AbstractColorInterpolationRable(Filter src,
Map props)
Construct an Abstract Rable from src and props. |
|
AbstractRable(Filter src)
Construct an Abstract Rable from src. |
|
AbstractRable(Filter src,
Map props)
Construct an Abstract Rable from src and props. |
|
AffineRable8Bit(Filter src,
AffineTransform affine)
|
|
ClipRable8Bit(Filter src,
Shape clipPath)
|
|
ClipRable8Bit(Filter src,
Shape clipPath,
boolean useAA)
|
|
ComponentTransferRable8Bit(Filter src,
ComponentTransferFunction alphaFunction,
ComponentTransferFunction redFunction,
ComponentTransferFunction greenFunction,
ComponentTransferFunction blueFunction)
|
|
ConvolveMatrixRable8Bit(Filter source)
|
|
DiffuseLightingRable8Bit(Filter src,
Rectangle2D litRegion,
Light light,
double kd,
double surfaceScale,
double[] kernelUnitLength)
|
|
FilterAlphaRable(Filter src)
|
|
FilterAsAlphaRable(Filter src)
|
|
FilterChainRable8Bit(Filter source,
Rectangle2D filterRegion)
Default constructor. |
|
FilterResRable8Bit(Filter src,
int filterResX,
int filterResY)
|
|
GaussianBlurRable8Bit(Filter src,
double stdevX,
double stdevY)
|
|
MorphologyRable8Bit(Filter src,
double radiusX,
double radiusY,
boolean doDilation)
|
|
PadRable8Bit(Filter src,
Rectangle2D padRect,
PadMode padMode)
|
|
ProfileRable(Filter src,
ICCColorSpaceExt colorSpace)
Instances should be built through the static factory methods |
|
SpecularLightingRable8Bit(Filter src,
Rectangle2D litRegion,
Light light,
double ks,
double specularExponent,
double surfaceScale,
double[] kernelUnitLength)
|
|
TileRable8Bit(Filter source,
Rectangle2D tiledRegion,
Rectangle2D tileRegion,
boolean overflow)
Default constructor |
| Uses of Filter in org.apache.batik.ext.awt.image.spi |
|---|
| Methods in org.apache.batik.ext.awt.image.spi that return Filter | |
|---|---|
Filter |
ImageTagRegistry.checkCache(ParsedURL purl,
ICCColorSpaceExt colorSpace)
|
Filter |
DefaultBrokenLinkProvider.getBrokenLinkImage(Object base,
String code,
Object[] params)
|
abstract Filter |
BrokenLinkProvider.getBrokenLinkImage(Object base,
String code,
Object[] params)
This method is responsbile for constructing an image that will represent the missing image in the document. |
static Filter |
ImageTagRegistry.getBrokenLinkImage(Object base,
String code,
Object[] params)
|
Filter |
StreamRegistryEntry.handleStream(InputStream is,
ParsedURL origURL,
boolean needRawData)
Decode the Stream into a Filter. |
Filter |
URLRegistryEntry.handleURL(ParsedURL url,
boolean needRawData)
Decode the URL into a RenderableImage, here you should feel free to open the URL yourself. |
Filter |
JDKRegistryEntry.handleURL(ParsedURL purl,
boolean needRawData)
Decode the URL into a RenderableImage |
Filter |
ImageTagRegistry.readStream(InputStream is)
|
Filter |
ImageTagRegistry.readStream(InputStream is,
ICCColorSpaceExt colorSpace)
|
Filter |
ImageTagRegistry.readURL(InputStream is,
ParsedURL purl,
ICCColorSpaceExt colorSpace,
boolean allowOpenStream,
boolean returnBrokenLink)
|
Filter |
ImageTagRegistry.readURL(ParsedURL purl)
|
Filter |
ImageTagRegistry.readURL(ParsedURL purl,
ICCColorSpaceExt colorSpace)
|
| Methods in org.apache.batik.ext.awt.image.spi with parameters of type Filter | |
|---|---|
static boolean |
BrokenLinkProvider.hasBrokenLinkProperty(Filter f)
|
| Uses of Filter in org.apache.batik.extension.svg |
|---|
| Subinterfaces of Filter in org.apache.batik.extension.svg | |
|---|---|
interface |
BatikHistogramNormalizationFilter
|
| Classes in org.apache.batik.extension.svg that implement Filter | |
|---|---|
class |
BatikHistogramNormalizationFilter8Bit
|
| Methods in org.apache.batik.extension.svg that return Filter | |
|---|---|
Filter |
BatikHistogramNormalizationElementBridge.createFilter(BridgeContext ctx,
Element filterElement,
Element filteredElement,
GraphicsNode filteredNode,
Filter inputFilter,
Rectangle2D filterRegion,
Map filterMap)
Creates a Filter primitive according to the specified parameters. |
Filter |
BatikHistogramNormalizationFilter.getSource()
Returns the source to be offset. |
Filter |
BatikHistogramNormalizationFilter8Bit.getSource()
Returns the source of the operation |
| Methods in org.apache.batik.extension.svg with parameters of type Filter | |
|---|---|
Filter |
BatikHistogramNormalizationElementBridge.createFilter(BridgeContext ctx,
Element filterElement,
Element filteredElement,
GraphicsNode filteredNode,
Filter inputFilter,
Rectangle2D filterRegion,
Map filterMap)
Creates a Filter primitive according to the specified parameters. |
void |
BatikHistogramNormalizationFilter.setSource(Filter src)
Sets the source to be offset. |
void |
BatikHistogramNormalizationFilter8Bit.setSource(Filter src)
Sets the source of the operation |
| Constructors in org.apache.batik.extension.svg with parameters of type Filter | |
|---|---|
BatikHistogramNormalizationFilter8Bit(Filter src,
float trim)
|
| Uses of Filter in org.apache.batik.gvt |
|---|
| Fields in org.apache.batik.gvt declared as Filter | |
|---|---|
protected Filter |
AbstractGraphicsNode.filter
The filter of this graphics node. |
protected Filter |
RasterImageNode.image
The renderable image that represents this image node. |
| Methods in org.apache.batik.gvt that return Filter | |
|---|---|
Filter |
AbstractGraphicsNode.getEnableBackgroundGraphicsNodeRable(boolean createIfNeeded)
Returns the GraphicsNodeRable for this node. |
Filter |
GraphicsNode.getEnableBackgroundGraphicsNodeRable(boolean createIfNeeded)
Returns the GraphicsNodeRable for this node. |
Filter |
AbstractGraphicsNode.getFilter()
Returns the filter of this node or null if any. |
Filter |
GraphicsNode.getFilter()
Returns the filter of this node or null if any. |
Filter |
RasterImageNode.getGraphicsNodeRable()
Returns the RenderableImage for this node. |
Filter |
AbstractGraphicsNode.getGraphicsNodeRable(boolean createIfNeeded)
Returns the GraphicsNodeRable for this node. |
Filter |
GraphicsNode.getGraphicsNodeRable(boolean createIfNeeded)
Returns the GraphicsNodeRable for this node. |
Filter |
RasterImageNode.getImage()
Returns the raster image of this raster image node. |
| Methods in org.apache.batik.gvt with parameters of type Filter | |
|---|---|
void |
AbstractGraphicsNode.setFilter(Filter newFilter)
Sets the filter of this node. |
void |
GraphicsNode.setFilter(Filter newFilter)
Sets the filter of this node. |
void |
RasterImageNode.setImage(Filter newImage)
Sets the raster image of this raster image node. |
| Constructors in org.apache.batik.gvt with parameters of type Filter | |
|---|---|
PatternPaintContext(ColorModel destCM,
AffineTransform usr2dev,
RenderingHints hints,
Filter tile,
Rectangle2D patternRegion,
boolean overflow)
|
| Uses of Filter in org.apache.batik.gvt.filter |
|---|
| Subinterfaces of Filter in org.apache.batik.gvt.filter | |
|---|---|
interface |
GraphicsNodeRable
This interface allows GraphicsNode to be seen as RenderableImages, which can be used for operations such as filtering, masking or compositing. |
interface |
Mask
Implements a masking operation. |
| Classes in org.apache.batik.gvt.filter that implement Filter | |
|---|---|
class |
BackgroundRable8Bit
This implementation of RenderableImage will render its input GraphicsNode into a BufferedImage upon invokation of one of its createRendering methods. |
class |
GraphicsNodeRable8Bit
This implementation of RenderableImage will render its input GraphicsNode into a BufferedImage upon invokation of one of its createRendering methods. |
class |
MaskRable8Bit
MaskRable implementation |
| Methods in org.apache.batik.gvt.filter that return Filter | |
|---|---|
Filter |
BackgroundRable8Bit.getBackground(GraphicsNode gn,
GraphicsNode child,
Rectangle2D aoi)
Returns a filter that represents the background image for child. |
Filter |
Mask.getSource()
This returns the current image being masked by the mask node. |
Filter |
MaskRable8Bit.getSource()
This returns the current image being masked by the mask node. |
| Methods in org.apache.batik.gvt.filter with parameters of type Filter | |
|---|---|
void |
Mask.setSource(Filter src)
The source to be masked by the mask node. |
void |
MaskRable8Bit.setSource(Filter src)
The source to be masked by the mask node. |
| Constructors in org.apache.batik.gvt.filter with parameters of type Filter | |
|---|---|
MaskRable8Bit(Filter src,
GraphicsNode mask,
Rectangle2D filterRegion)
|
| Uses of Filter in org.apache.batik.gvt.renderer |
|---|
| Fields in org.apache.batik.gvt.renderer declared as Filter | |
|---|---|
protected Filter |
StaticRenderer.rootFilter
|
|
||||||||||
| PREV NEXT | FRAMES NO FRAMES |


John Cordano
About
|
Portfolio
|
Contact
Portfolio
The Psychic Game
Crystals Game
Trivia Game
Ghipy Images
Train Scheduler
LIRI Node App
Hangman Game
Bamazon Project
Friend Finder
Burger Project
Burger Sequelize Project
News Scrape
Simpsons Clicky Game
Connect With Me
©Copyright by John Cordano


This simple App is a "Single Page Application (SPA)". It is
The MusicSPA manages music Performers and Recordings. It is a RESTful web service client to the web service MusicService. The MusicSPA cannot do any work without MusicService being started.
With MusicSPA the user can perform the following operations in the browser:
The App is a small case study using ...
In the current stage the App doesn't implement any security features. It communicates with the MusicService via HTTP (no HTTPS) and does not require the user to log in before accessing the services data.
The project build and management of components is based on npm, bower and gulp.


Grab is a company that offers a service that solves many transportation challenges through the use of one mobile app, and serves B2C and B2B customers. It promises the customer for safety, fast, and secure delivery with low price. The services include taxi service, food delivery, and parcel delivery (in case you forgot your items at home or anywhere). What is unique about grab is that it works with the existing taxi ecosystem in the countries it is operating in. This makes the price more reasonable. For grab taxi, you can also pick who you want to drive with.


This command writes the current selection to a Motorola S format file. It only writes S1 data records which have a 16 bit address, so this command is disabled if the address of the last byte is greater than 65535 (which may depend on how the start address is calculated -- see below). It is also disabled if there is no selection and no highlighted bytes.
This command brings up the Export Motorola S Dialog which allows you to save the file using any valid file name. If the file already exists you are prompted to overwrite it. A Motorola S format file is a text file.
New in HexEdit 3.2 is the ability to export discontiguous records. To enable this select the "Export highlighted areas only" if the Save As dialog. This checkbox is disabled if no part of the file is highlighted.
Each S1 record contains an address and a certain number of bytes stored as text along with a checksum. Unless the aforementioned option is selected, HexEdit will only create S1 records that are contiguous, and will always generate correct checksums for each record. The number of bytes per record and how the starting address is generated are determined by the Export section of the System Options page of the Options dialog.
An S0 (start) record is written at the start of file and an S5 (record count) record is written at the end of file.


Choreo Connect 1.1.0 is Released.
Choreo Connect is a cloud-native, open-source, and developer-centric API gateway. It provides first-class support for Kubernetes while facilitating an array of API management quality of services (QoS), such as message security rate-limiting, observability, and message mediation. It is powered by Envoy Proxy!
Choreo Connect 1.1.0 is also compatible with WSO2 API Manager 4.1.0.
What's new in 1.1.0
New Features
- Mock API implementation support considering API definition.
- API Policy support with WSO2 API-M.
- Request payload passing from router to enforcer.
- Git integration support.
- Open Policy Agent (OPA) validation.
- Default versioned APIs.
- Analytics publishing and rate limitting for WebSocket APIs.
Improvements
- API policy version support.
- Improved WebSocket API handling.
- Configurable DNS refresh rate.
- Log correlation in enforcer.
- Operation level interceptor support.
Bug fixes
Known Issues
Try it
How To Contribute
Your feedback is most welcome!
Contributing Code
Read through the project Contribution Guidelines to learn how to contribute with code.
User Forum
If you have any questions regarding the product you can use our StackOverflow forum to raise them.
Slack Channels
Join us via this to our wso2-apim.slack.com for even better communication. You can talk to our developers directly regarding any issues, concerns about the product. We encourage you to start discussions or join any ongoing discussions with the team, via our slack channels.
Reporting Issues
We encourage you to report issues, documentation faults, and feature requests regarding Choreo Connect through the Github Issues.
And please be advised that security issues must be reported to<EMAIL_ADDRESS>not as a GitHub issue, in order to reach the proper audience. We strongly advise following the WSO2 Security Vulnerability Reporting Guidelines when reporting the security issues.
--Choreo Connect Team--


|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object apollo.dataadapter.CurationState
public class CurationState
| Constructor Summary | |
|---|---|
CurationState(int i)
|
| Method Summary | |
|---|---|
void |
addAnnotationEditor(AnnotationEditor ae,
boolean forwardStrand)
|
void |
emptyNameAdapter()
|
AnnotationEditor |
getAnnotationEditor(boolean forwardStrand)
|
java.lang.String |
getCurationName()
|
CurationSet |
getCurationSet()
|
ApolloDataAdapterI |
getDataAdapter()
|
ApolloNameAdapterI |
getNameAdapter(AnnotatedFeatureI af)
A style/property scheme can be used by multiple curations (which is often the case) BUT the name adapters proscribed by its feature properties are curation specific in that they require the curations transaction manager, as the TM is checked for past ids in making new temp ids. |
PropertyScheme |
getPropertyScheme()
|
TransactionManager |
getTransactionManager()
Get the TransactionManager used by the embed curationSet. |
boolean |
haveAnnots()
Returns true if curSet have >0 annotations |
boolean |
haveSequence()
Whether curationSet has ref sequence (formerly in ApolloFrame) |
void |
setCurationName(java.lang.String spStr)
|
void |
setCurationSet(CurationSet cs)
CurationHolder goes through compDatHolder and sets CurationState cur set |
void |
setDataAdapter(ApolloDataAdapterI da)
|
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public CurationState(int i)
| Method Detail |
|---|
public void setCurationName(java.lang.String spStr)
public java.lang.String getCurationName()
public void setCurationSet(CurationSet cs)
public CurationSet getCurationSet()
public void setDataAdapter(ApolloDataAdapterI da)
public ApolloDataAdapterI getDataAdapter()
public PropertyScheme getPropertyScheme()
public void emptyNameAdapter()
public ApolloNameAdapterI getNameAdapter(AnnotatedFeatureI af)
public TransactionManager getTransactionManager()
CurationSet.getTransactionManager
.
public void addAnnotationEditor(AnnotationEditor ae, boolean forwardStrand)
public AnnotationEditor getAnnotationEditor(boolean forwardStrand)
public boolean haveSequence()
public boolean haveAnnots()
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


If you'd like to test Telegram Passport, use this page to request data. If you'd like to check out a real-life implementation, please see this blog post for examples of services that have integrated Telegram Passport.
Note that the passport demo bot will only store data for 1 hour and then discard it. After logging in here, you can use the logout button on this page to reset your session.


image |
string
|
|
|
The URL to the logo image. |
url |
string
|
<optional>
|
|
A url to be linked to from the logo. If the user clicks the logo the link will open in a new window. |
position |
string
|
<optional>
|
"top-right"
|
The location to place the logo (top-left, top-right, bottom-left, or bottom-right). |
offsetH |
number
|
<optional>
|
0
|
Horizontal offset (px) from the edge of the video. |
offsetV |
number
|
<optional>
|
0
|
Vertical offset (px) from the edge of the video. |
width |
number
|
<optional>
|
|
The width of the logo image (px). If not specified, it will be the width of the original image. |
height |
number
|
<optional>
|
|
The height of the logo image (px). If not specified, it will be the height of the original image. |
padding |
number
|
<optional>
|
5
|
Padding around the logo image (px). |
fadeDelay |
Number
|
<optional>
<nullable>
|
5000
|
Time until fade-out begins (msec). If `null` is specified, automatic fade-out is not performed. |
hideOnReady |
boolean
|
<optional>
|
false
|
Do not show the logo image when the player is ready. |
opacity |
number
|
<optional>
|
1
|
The opacity of the image. If not specified it will default to 1. |