]> git.imager.perl.org - imager.git/blobdiff - lib/Imager/Regops.pm
- Imager::Font::BBox objects now have right_bearing() and display_width()
[imager.git] / lib / Imager / Regops.pm
index 01712f1f6dbdd7af444f7438ea3de775f728a06a..bb365e48160fe93e4b18c634ba0b63ec22f32c9d 100644 (file)
@@ -52,340 +52,380 @@ use constant RBC_JUMPNZ => 42;
 use constant RBC_SET => 43;
 use constant RBC_SETP => 44;
 use constant RBC_PRINT => 45;
-use constant RBC_OP_COUNT => 46;
+use constant RBC_RGBA => 46;
+use constant RBC_HSVA => 47;
+use constant RBC_ALPHA => 48;
+use constant RBC_LOG => 49;
+use constant RBC_EXP => 50;
+use constant RBC_OP_COUNT => 51;
 
-@EXPORT = qw(RBC_ADD RBC_SUBTRACT RBC_MULT RBC_DIV RBC_MOD RBC_POW RBC_UMINUS RBC_MULTP RBC_ADDP RBC_SUBTRACTP RBC_SIN RBC_COS RBC_ATAN2 RBC_SQRT RBC_DISTANCE RBC_GETP1 RBC_GETP2 RBC_GETP3 RBC_VALUE RBC_HUE RBC_SAT RBC_HSV RBC_RED RBC_GREEN RBC_BLUE RBC_RGB RBC_INT RBC_IF RBC_IFP RBC_LE RBC_LT RBC_GE RBC_GT RBC_EQ RBC_NE RBC_AND RBC_OR RBC_NOT RBC_ABS RBC_RET RBC_JUMP RBC_JUMPZ RBC_JUMPNZ RBC_SET RBC_SETP RBC_PRINT RBC_OP_COUNT);
+@EXPORT = qw(RBC_ADD RBC_SUBTRACT RBC_MULT RBC_DIV RBC_MOD RBC_POW RBC_UMINUS RBC_MULTP RBC_ADDP RBC_SUBTRACTP RBC_SIN RBC_COS RBC_ATAN2 RBC_SQRT RBC_DISTANCE RBC_GETP1 RBC_GETP2 RBC_GETP3 RBC_VALUE RBC_HUE RBC_SAT RBC_HSV RBC_RED RBC_GREEN RBC_BLUE RBC_RGB RBC_INT RBC_IF RBC_IFP RBC_LE RBC_LT RBC_GE RBC_GT RBC_EQ RBC_NE RBC_AND RBC_OR RBC_NOT RBC_ABS RBC_RET RBC_JUMP RBC_JUMPZ RBC_JUMPNZ RBC_SET RBC_SETP RBC_PRINT RBC_RGBA RBC_HSVA RBC_ALPHA RBC_LOG RBC_EXP RBC_OP_COUNT);
 
 %Attr = (
-          'or' => {
-                    'opcode' => 36,
-                    'parms' => 2,
-                    'func' => '0',
-                    'types' => 'rr',
-                    'result' => 'r'
-                  },
-          'getp1' => {
-                       'opcode' => 15,
-                       'parms' => 2,
+          'abs' => {
+                     'func' => 1,
+                     'opcode' => 38,
+                     'parms' => 1,
+                     'result' => 'r',
+                     'types' => 'r'
+                   },
+          'add' => {
+                     'func' => 0,
+                     'opcode' => 0,
+                     'parms' => 2,
+                     'result' => 'r',
+                     'types' => 'rr'
+                   },
+          'addp' => {
+                      'func' => 0,
+                      'opcode' => 8,
+                      'parms' => 2,
+                      'result' => 'p',
+                      'types' => 'pp'
+                    },
+          'alpha' => {
                        'func' => 1,
-                       'types' => 'rr',
-                       'result' => 'p'
+                       'opcode' => 48,
+                       'parms' => 1,
+                       'result' => 'r',
+                       'types' => 'p'
                      },
-          'uminus' => {
-                        'opcode' => 6,
-                        'parms' => 1,
-                        'func' => '0',
-                        'types' => 'r',
-                        'result' => 'r'
-                      },
-          'getp2' => {
-                       'opcode' => 16,
-                       'parms' => 2,
+          'and' => {
+                     'func' => 0,
+                     'opcode' => 35,
+                     'parms' => 2,
+                     'result' => 'r',
+                     'types' => 'rr'
+                   },
+          'atan2' => {
                        'func' => 1,
-                       'types' => 'rr',
-                       'result' => 'p'
-                     },
-          'getp3' => {
-                       'opcode' => 17,
+                       'opcode' => 12,
                        'parms' => 2,
-                       'func' => 1,
-                       'types' => 'rr',
-                       'result' => 'p'
+                       'result' => 'r',
+                       'types' => 'rr'
                      },
-          'jumpnz' => {
-                        'opcode' => 42,
-                        'parms' => 1,
-                        'func' => '0',
-                        'types' => 'r',
-                        'result' => undef
-                      },
-          'op_count' => {
-                          'opcode' => 46,
-                          'parms' => '0',
-                          'func' => '0',
-                          'types' => '',
-                          'result' => undef
-                        },
           'blue' => {
+                      'func' => 1,
                       'opcode' => 24,
                       'parms' => 1,
-                      'func' => 1,
-                      'types' => 'p',
-                      'result' => 'r'
+                      'result' => 'r',
+                      'types' => 'p'
                     },
-          'int' => {
-                     'opcode' => 26,
+          'cos' => {
+                     'func' => 1,
+                     'opcode' => 11,
                      'parms' => 1,
+                     'result' => 'r',
+                     'types' => 'r'
+                   },
+          'distance' => {
+                          'func' => 1,
+                          'opcode' => 14,
+                          'parms' => 4,
+                          'result' => 'r',
+                          'types' => 'rrrr'
+                        },
+          'div' => {
+                     'func' => 0,
+                     'opcode' => 3,
+                     'parms' => 2,
+                     'result' => 'r',
+                     'types' => 'rr'
+                   },
+          'eq' => {
+                    'func' => 0,
+                    'opcode' => 33,
+                    'parms' => 2,
+                    'result' => 'r',
+                    'types' => 'rr'
+                  },
+          'exp' => {
                      'func' => 1,
-                     'types' => 'r',
-                     'result' => 'r'
+                     'opcode' => 50,
+                     'parms' => 1,
+                     'result' => 'r',
+                     'types' => 'r'
                    },
-          'le' => {
-                    'opcode' => 29,
+          'ge' => {
+                    'func' => 0,
+                    'opcode' => 31,
                     'parms' => 2,
-                    'func' => '0',
-                    'types' => 'rr',
-                    'result' => 'r'
+                    'result' => 'r',
+                    'types' => 'rr'
                   },
-          'multp' => {
-                       'opcode' => 7,
+          'getp1' => {
+                       'func' => 1,
+                       'opcode' => 15,
                        'parms' => 2,
-                       'func' => '0',
-                       'types' => 'pr',
-                       'result' => 'p'
+                       'result' => 'p',
+                       'types' => 'rr'
                      },
-          'ne' => {
-                    'opcode' => 34,
-                    'parms' => 2,
-                    'func' => '0',
-                    'types' => 'rr',
-                    'result' => 'r'
-                  },
-          'jumpz' => {
-                       'opcode' => 41,
-                       'parms' => 1,
-                       'func' => '0',
-                       'types' => 'r',
-                       'result' => undef
+          'getp2' => {
+                       'func' => 1,
+                       'opcode' => 16,
+                       'parms' => 2,
+                       'result' => 'p',
+                       'types' => 'rr'
                      },
-          'atan2' => {
-                       'opcode' => 12,
+          'getp3' => {
+                       'func' => 1,
+                       'opcode' => 17,
                        'parms' => 2,
+                       'result' => 'p',
+                       'types' => 'rr'
+                     },
+          'green' => {
                        'func' => 1,
-                       'types' => 'rr',
-                       'result' => 'r'
+                       'opcode' => 23,
+                       'parms' => 1,
+                       'result' => 'r',
+                       'types' => 'p'
                      },
-          'subtractp' => {
-                           'opcode' => 9,
-                           'parms' => 2,
-                           'func' => '0',
-                           'types' => 'pp',
-                           'result' => 'p'
-                         },
-          'rgb' => {
-                     'opcode' => 25,
-                     'parms' => 3,
+          'gt' => {
+                    'func' => 0,
+                    'opcode' => 32,
+                    'parms' => 2,
+                    'result' => 'r',
+                    'types' => 'rr'
+                  },
+          'hsv' => {
                      'func' => 1,
-                     'types' => 'rrr',
-                     'result' => 'p'
+                     'opcode' => 21,
+                     'parms' => 3,
+                     'result' => 'p',
+                     'types' => 'rrr'
                    },
-          'red' => {
-                     'opcode' => 22,
+          'hsva' => {
+                      'func' => 1,
+                      'opcode' => 47,
+                      'parms' => 4,
+                      'result' => 'p',
+                      'types' => 'rrrr'
+                    },
+          'hue' => {
+                     'func' => 1,
+                     'opcode' => 19,
                      'parms' => 1,
+                     'result' => 'r',
+                     'types' => 'p'
+                   },
+          'if' => {
+                    'func' => 1,
+                    'opcode' => 27,
+                    'parms' => 3,
+                    'result' => 'r',
+                    'types' => 'rrr'
+                  },
+          'ifp' => {
                      'func' => 1,
-                     'types' => 'p',
-                     'result' => 'r'
+                     'opcode' => 28,
+                     'parms' => 3,
+                     'result' => 'p',
+                     'types' => 'rpp'
+                   },
+          'int' => {
+                     'func' => 1,
+                     'opcode' => 26,
+                     'parms' => 1,
+                     'result' => 'r',
+                     'types' => 'r'
                    },
-          'setp' => {
-                      'opcode' => 44,
-                      'parms' => 1,
-                      'func' => '0',
-                      'types' => 'p',
-                      'result' => 'p'
-                    },
           'jump' => {
+                      'func' => 0,
                       'opcode' => 40,
-                      'parms' => '0',
-                      'func' => '0',
-                      'types' => '',
-                      'result' => undef
+                      'parms' => 0,
+                      'result' => undef,
+                      'types' => ''
                     },
-          'value' => {
-                       'opcode' => 18,
+          'jumpnz' => {
+                        'func' => 0,
+                        'opcode' => 42,
+                        'parms' => 1,
+                        'result' => undef,
+                        'types' => 'r'
+                      },
+          'jumpz' => {
+                       'func' => 0,
+                       'opcode' => 41,
                        'parms' => 1,
-                       'func' => 1,
-                       'types' => 'p',
-                       'result' => 'r'
+                       'result' => undef,
+                       'types' => 'r'
                      },
-          'mod' => {
-                     'opcode' => 4,
-                     'parms' => 2,
-                     'func' => '0',
-                     'types' => 'rr',
-                     'result' => 'r'
+          'le' => {
+                    'func' => 0,
+                    'opcode' => 29,
+                    'parms' => 2,
+                    'result' => 'r',
+                    'types' => 'rr'
+                  },
+          'log' => {
+                     'func' => 1,
+                     'opcode' => 49,
+                     'parms' => 1,
+                     'result' => 'r',
+                     'types' => 'r'
                    },
           'lt' => {
+                    'func' => 0,
                     'opcode' => 30,
                     'parms' => 2,
-                    'func' => '0',
-                    'types' => 'rr',
-                    'result' => 'r'
+                    'result' => 'r',
+                    'types' => 'rr'
                   },
+          'mod' => {
+                     'func' => 0,
+                     'opcode' => 4,
+                     'parms' => 2,
+                     'result' => 'r',
+                     'types' => 'rr'
+                   },
           'mult' => {
+                      'func' => 0,
                       'opcode' => 2,
                       'parms' => 2,
-                      'func' => '0',
-                      'types' => 'rr',
-                      'result' => 'r'
+                      'result' => 'r',
+                      'types' => 'rr'
                     },
-          'hue' => {
-                     'opcode' => 19,
+          'multp' => {
+                       'func' => 0,
+                       'opcode' => 7,
+                       'parms' => 2,
+                       'result' => 'p',
+                       'types' => 'pr'
+                     },
+          'ne' => {
+                    'func' => 0,
+                    'opcode' => 34,
+                    'parms' => 2,
+                    'result' => 'r',
+                    'types' => 'rr'
+                  },
+          'not' => {
+                     'func' => 0,
+                     'opcode' => 37,
                      'parms' => 1,
-                     'func' => 1,
-                     'types' => 'p',
-                     'result' => 'r'
+                     'result' => 'r',
+                     'types' => 'r'
                    },
-          'div' => {
-                     'opcode' => 3,
+          'op_count' => {
+                          'func' => 0,
+                          'opcode' => 51,
+                          'parms' => 0,
+                          'result' => undef,
+                          'types' => ''
+                        },
+          'or' => {
+                    'func' => 0,
+                    'opcode' => 36,
+                    'parms' => 2,
+                    'result' => 'r',
+                    'types' => 'rr'
+                  },
+          'pow' => {
+                     'func' => 0,
+                     'opcode' => 5,
                      'parms' => 2,
-                     'func' => '0',
-                     'types' => 'rr',
-                     'result' => 'r'
+                     'result' => 'r',
+                     'types' => 'rr'
                    },
-          'cos' => {
-                     'opcode' => 11,
-                     'parms' => 1,
+          'print' => {
+                       'func' => 0,
+                       'opcode' => 45,
+                       'parms' => 1,
+                       'result' => undef,
+                       'types' => 'r'
+                     },
+          'red' => {
                      'func' => 1,
-                     'types' => 'r',
-                     'result' => 'r'
-                   },
-          'subtract' => {
-                          'opcode' => 1,
-                          'parms' => 2,
-                          'func' => '0',
-                          'types' => 'rr',
-                          'result' => 'r'
-                        },
-          'sat' => {
-                     'opcode' => 20,
+                     'opcode' => 22,
                      'parms' => 1,
-                     'func' => 1,
-                     'types' => 'p',
-                     'result' => 'r'
+                     'result' => 'r',
+                     'types' => 'p'
                    },
-          'add' => {
-                     'opcode' => '0',
-                     'parms' => 2,
-                     'func' => '0',
-                     'types' => 'rr',
-                     'result' => 'r'
-                   },
-          'sin' => {
-                     'opcode' => 10,
+          'ret' => {
+                     'func' => 0,
+                     'opcode' => 39,
                      'parms' => 1,
+                     'result' => undef,
+                     'types' => 'p'
+                   },
+          'rgb' => {
                      'func' => 1,
-                     'types' => 'r',
-                     'result' => 'r'
+                     'opcode' => 25,
+                     'parms' => 3,
+                     'result' => 'p',
+                     'types' => 'rrr'
                    },
-          'sqrt' => {
-                      'opcode' => 13,
-                      'parms' => 1,
+          'rgba' => {
                       'func' => 1,
-                      'types' => 'r',
-                      'result' => 'r'
+                      'opcode' => 46,
+                      'parms' => 4,
+                      'result' => 'p',
+                      'types' => 'rrrr'
                     },
-          'ret' => {
-                     'opcode' => 39,
+          'sat' => {
+                     'func' => 1,
+                     'opcode' => 20,
                      'parms' => 1,
-                     'func' => '0',
-                     'types' => 'p',
-                     'result' => undef
+                     'result' => 'r',
+                     'types' => 'p'
                    },
-          'distance' => {
-                          'opcode' => 14,
-                          'parms' => 4,
-                          'func' => 1,
-                          'types' => 'rrrr',
-                          'result' => 'r'
-                        },
           'set' => {
+                     'func' => 0,
                      'opcode' => 43,
                      'parms' => 1,
-                     'func' => '0',
-                     'types' => 'r',
-                     'result' => 'r'
-                   },
-          'ge' => {
-                    'opcode' => 31,
-                    'parms' => 2,
-                    'func' => '0',
-                    'types' => 'rr',
-                    'result' => 'r'
-                  },
-          'print' => {
-                       'opcode' => 45,
-                       'parms' => 1,
-                       'func' => '0',
-                       'types' => 'r',
-                       'result' => undef
-                     },
-          'if' => {
-                    'opcode' => 27,
-                    'parms' => 3,
-                    'func' => 1,
-                    'types' => 'rrr',
-                    'result' => 'r'
-                  },
-          'not' => {
-                     'opcode' => 37,
-                     'parms' => 1,
-                     'func' => '0',
-                     'types' => 'r',
-                     'result' => 'r'
+                     'result' => 'r',
+                     'types' => 'r'
                    },
-          'hsv' => {
-                     'opcode' => 21,
-                     'parms' => 3,
+          'setp' => {
+                      'func' => 0,
+                      'opcode' => 44,
+                      'parms' => 1,
+                      'result' => 'p',
+                      'types' => 'p'
+                    },
+          'sin' => {
                      'func' => 1,
-                     'types' => 'rrr',
-                     'result' => 'p'
-                   },
-          'green' => {
-                       'opcode' => 23,
-                       'parms' => 1,
-                       'func' => 1,
-                       'types' => 'p',
-                       'result' => 'r'
-                     },
-          'and' => {
-                     'opcode' => 35,
-                     'parms' => 2,
-                     'func' => '0',
-                     'types' => 'rr',
-                     'result' => 'r'
-                   },
-          'abs' => {
-                     'opcode' => 38,
+                     'opcode' => 10,
                      'parms' => 1,
-                     'func' => 1,
-                     'types' => 'r',
-                     'result' => 'r'
-                   },
-          'eq' => {
-                    'opcode' => 33,
-                    'parms' => 2,
-                    'func' => '0',
-                    'types' => 'rr',
-                    'result' => 'r'
-                  },
-          'pow' => {
-                     'opcode' => 5,
-                     'parms' => 2,
-                     'func' => '0',
-                     'types' => 'rr',
-                     'result' => 'r'
+                     'result' => 'r',
+                     'types' => 'r'
                    },
-          'addp' => {
-                      'opcode' => 8,
-                      'parms' => 2,
-                      'func' => '0',
-                      'types' => 'pp',
-                      'result' => 'p'
+          'sqrt' => {
+                      'func' => 1,
+                      'opcode' => 13,
+                      'parms' => 1,
+                      'result' => 'r',
+                      'types' => 'r'
                     },
-          'gt' => {
-                    'opcode' => 32,
-                    'parms' => 2,
-                    'func' => '0',
-                    'types' => 'rr',
-                    'result' => 'r'
-                  },
-          'ifp' => {
-                     'opcode' => 28,
-                     'parms' => 3,
-                     'func' => 1,
-                     'types' => 'rpp',
-                     'result' => 'p'
-                   }
+          'subtract' => {
+                          'func' => 0,
+                          'opcode' => 1,
+                          'parms' => 2,
+                          'result' => 'r',
+                          'types' => 'rr'
+                        },
+          'subtractp' => {
+                           'func' => 0,
+                           'opcode' => 9,
+                           'parms' => 2,
+                           'result' => 'p',
+                           'types' => 'pp'
+                         },
+          'uminus' => {
+                        'func' => 0,
+                        'opcode' => 6,
+                        'parms' => 1,
+                        'result' => 'r',
+                        'types' => 'r'
+                      },
+          'value' => {
+                       'func' => 1,
+                       'opcode' => 18,
+                       'parms' => 1,
+                       'result' => 'r',
+                       'types' => 'p'
+                     }
         );
 $MaxOperands = 4;
 $PackCode = "i";
@@ -420,7 +460,7 @@ Tony Cook, tony@develop-help.com
 
 =head1 SEE ALSO
 
-perl(1), Imager(3), http://www.eecs.umich.edu/~addi/perl/Imager/
+perl(1), Imager(3), http://imager.perl.org/
 
 =cut