2013-08-19 5 views
0

C++ XPCOM 애드온의 요소를 그릴 수 있습니까? 이전에는 오래 전부터 nsIDOMCanvasRenderingContext2D 인터페이스의 객체를 가져올 수 있었고 캔버스에 이미지를 그리기 위해 tI의 메서드 PutImageData_explicit를 사용할 수있었습니다. 요즘 nsIDOMCanvasRenderingContext2D는 모든 것을 숨기고 이것을 달성하는 방법을 찾지 못했습니다.C++ XPCOM 코드에서 캔버스에 그리기

일반적으로 웹 페이지에 추가 기능을 사용하여 비디오를 렌더링하는 방법이 있습니까?

모든 조언을 주시면 감사하겠습니다. 고마워요

답변

0

지금은 PutImageData_explicit입니다. 그러나 그것은 보호 된 회원입니다.

  • 시스템을 속이고 사용자의 목적에 맞게 캡슐화를 해제 할 수 있습니다. 파생 및 다운 캐스팅 (이제 보호받는 회원은 모두 귀하의 것입니다).
  • 또는 어려운 방법으로 ImageDataErrorResult으로 뒤죽박죽을 보내면서 PutImageData을 사용하십시오. 보호 된 멤버에 도착 Downcasting

:

#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 및 heap 손상의 팬이 아닌 한 데이터 멤버 등을 추가하여)

+0

최근에 두 번째 방법을 시도했습니다. 성능면에서 대단한 결과 (비디오 프레임 그리기). "상영 중"에 대해 더 자세히 이야기하고 어떻게 달성 할 수 있습니까? – peetonn

+0

죄송합니다, 나는 다운 캐스팅을 말하려고했으나 업 캐스팅하지 않았습니다. 정답과 다운 캐스팅의 예가 추가되었습니다. – nmaier