从C++XPCOM代码中在画布上绘制

Draw on canvas from within C++ XPCOM code

本文关键字:绘制 C++XPCOM 代码      更新时间:2023-10-16

是否可以从C++XPCOM插件中提取元素?以前(可能很久以前)可以获得nsIDOMCanvasRenderingContext2D接口的对象,并使用ti的方法PutImageData_explicit在画布上绘制图像。如今,nsIDOMCanvasRenderingContext2D隐藏了一切,我不知道如何实现这一点。

一般来说,有没有一种方法可以通过在网页上添加插件来渲染视频(比如说从远程主机获得的视频)?

如有任何建议,我们将不胜感激。感谢

现在有PutImageData_explicit。但这是一个受保护的成员。

  • 你可能会为了自己的目的欺骗系统并破坏封装,例如通过派生和下转换(现在受保护的成员都是你的)
  • 或者用困难的方法,使用PutImageData,而不得不摆弄ImageDataErrorResult

降级到受保护的成员:

#include <string>
#include <iostream>
class Base {
  protected:
    std::string myName() {
      return "Base";
    }
};
class Derived : public Base {
  public:
    std::string myName() {
      return Base::myName();
    }
};
int main() {
  Base *base = new Base();
  Derived* derived = static_cast<Derived*>(base);
  std::cout << derived->myName() << std::endl;
  delete base;
  return 0;
}

PS:这是有效的,因为这仍然适用于真正的sizeof(Base) == sizeof(Derived)。你真的不想修改大小,例如通过添加数据成员之类的方式,除非你是segfault和堆损坏的粉丝;)