]> git.sesse.net Git - vlc/blobdiff - projects/mozilla/control/npolibvlc.h
mozilla plugin: move deinterlace to own video subobject, and fix memleak.
[vlc] / projects / mozilla / control / npolibvlc.h
index b447ef7e09ca929f4393615d76ae23f8c4af0009..a9896581a61bac2a0976556e63cb1f163393dec7 100644 (file)
@@ -99,6 +99,8 @@ protected:
 
     static const int methodCount;
     static const NPUTF8 * const methodNames[];
+
+    InvokeResult invoke(int index, const NPVariant *args, uint32_t argCount, NPVariant &result);
 };
 
 class LibvlcPlaylistItemsNPObject: public RuntimeNPObject
@@ -177,8 +179,77 @@ protected:
     friend class RuntimeNPClass<LibvlcVideoNPObject>;
 
     LibvlcVideoNPObject(NPP instance, const NPClass *aClass) :
+        RuntimeNPObject(instance, aClass),
+        marqueeObj(NULL), logoObj(NULL), deintObj(NULL) { }
+    virtual ~LibvlcVideoNPObject();
+
+    static const int propertyCount;
+    static const NPUTF8 * const propertyNames[];
+
+    InvokeResult getProperty(int index, NPVariant &result);
+    InvokeResult setProperty(int index, const NPVariant &value);
+
+    static const int methodCount;
+    static const NPUTF8 * const methodNames[];
+
+    InvokeResult invoke(int index, const NPVariant *args, uint32_t argCount, NPVariant &result);
+
+private:
+    NPObject *marqueeObj;
+    NPObject *logoObj;
+    NPObject *deintObj;
+};
+
+class LibvlcMarqueeNPObject: public RuntimeNPObject
+{
+protected:
+    friend class RuntimeNPClass<LibvlcMarqueeNPObject>;
+
+    LibvlcMarqueeNPObject(NPP instance, const NPClass *aClass) :
         RuntimeNPObject(instance, aClass) {};
-    virtual ~LibvlcVideoNPObject() {};
+    virtual ~LibvlcMarqueeNPObject() {};
+
+    static const int propertyCount;
+    static const NPUTF8 * const propertyNames[];
+
+    InvokeResult getProperty(int index, NPVariant &result);
+    InvokeResult setProperty(int index, const NPVariant &value);
+
+    static const int methodCount;
+    static const NPUTF8 * const methodNames[];
+
+    InvokeResult invoke(int index, const NPVariant *args, uint32_t argCount, NPVariant &result);
+};
+
+class LibvlcLogoNPObject: public RuntimeNPObject
+{
+protected:
+    friend class RuntimeNPClass<LibvlcLogoNPObject>;
+
+    LibvlcLogoNPObject(NPP instance, const NPClass *aClass) :
+        RuntimeNPObject(instance, aClass) { }
+    virtual ~LibvlcLogoNPObject() { }
+
+    static const int propertyCount;
+    static const NPUTF8 * const propertyNames[];
+
+    InvokeResult getProperty(int index, NPVariant &result);
+    InvokeResult setProperty(int index, const NPVariant &value);
+
+    static const int methodCount;
+    static const NPUTF8 * const methodNames[];
+
+    InvokeResult invoke(int index, const NPVariant *args, uint32_t argCount, NPVariant &result);
+};
+
+class LibvlcDeinterlaceNPObject: public RuntimeNPObject
+{
+protected:
+    friend class RuntimeNPClass<LibvlcDeinterlaceNPObject>;
+
+    LibvlcDeinterlaceNPObject(NPP instance, const NPClass *aClass) :
+        RuntimeNPObject(instance, aClass) { }
+    virtual ~LibvlcDeinterlaceNPObject() { }
 
     static const int propertyCount;
     static const NPUTF8 * const propertyNames[];