2010-02-18 4 views
0

Mac 용 이전 이미지보기 플러그인을 다시 쓰려고합니다. 이전 버전은 QuickDraw (오래된 버전)와 리소스 (실제로는 정말 오래된 버전)를 사용하므로 Firefox 3.6에서 작동하지 않습니다. (이유는 내가 다시 쓰는 이유입니다.)샘플 Mac Firefox 플러그인?

몇 가지 목표 C를 알고 있습니다. , 그래서 나는 새로운 fangled Mac 루틴과 펜촉 등을 사용하여 이것을 다시 쓰려고한다. 그러나 시작하는 법을 모르겠다. 나는 모질라 소스와 함께 제공되는 BasicPlugin 예제를 가지고 있는데, 그래서 엔트리 포인트 등으로 플러그인을 만드는 법을 알고있다. 그러나 펜촉을 만드는 방법과 엔트리 포인트와 함께 Obj-C를 인터페이스하는 법을 알지 못한다.

누구나 Mac 용 고급 샘플을 BasicPlugin.bundle보다 알고 있습니까? (가급적이면 간단히보고 이해할 수있을만큼 간단합니다 ...)

감사합니다.

답변

2

슬프게도 나는 좋은 것을 전혀 모른다. "중간" 예. 그러나 Obj-C를 통합하는 것은 그렇게 어렵지 않습니다. 따라서 다음은 수행해야 할 작업에 대한 간략한 개요입니다.

동일한 프로젝트에서 Obj-C 및 C/C++ 소스를 사용할 수 있으며, 어느 정도 분리 된 상태로 유지하는 것이 좋습니다. 예를 들어 엔트리 포인트 및 다른 NPAPI 인터페이싱 소스 파일을 일반 C 또는 C++ 파일로 유지함으로써 수행 할 수 있습니다. 거기에서 플러그인으로 호출을 전달합니다.
Opaque pointers은 깨끗한 분리를 유지하는 데 도움이됩니다 (예 : here.

플러그인의 주요 변경 사항에는 다른 드로잉 및 이벤트 모델로의 전환이 포함됩니다. 이들은 NPP_New()에서 협상해야하며, here은 드로잉 모델의 예제입니다. Cocoa를 사용하고 64 비트 환경을 지원하려면 Cocoa event model을 사용해야합니다.

UI 요소를 그리려면 NSGraphicsContextfrom the CGContextRef을 사용하고 NSViewin the context을 그릴 수 있어야합니다. this post 및 그 후속 조치에 대한 자세한 내용도 참조하십시오.

+0

실제로 내 주요 문제 (현재)는 프로젝트에 펜촉을 통합하는 것입니다. 특히 NSView를 내 플러그인 공간으로 가져 오는 방법 ... NPAPI 항목이 있고 간단한 extern "C"가 필요하다면 그걸로 처리해야합니다 ... –

+0

당신은 MacOSX에서 하위 창을 가져 오면 NSView를 연결할 수있는 것이 없습니다. 왜 당신이 얻을 수있는 컨텍스트에 직접 그릴 수 있습니까? –

+0

하지만 버튼, 스크롤바 등을 어떻게 얻을 수 있습니까? 나는 내가 얻는 맥락이 석영/탄소의 맥락이라고 생각한다. 그러나 나는 그것이 지원되지 않는다고 생각한다. 그러므로 나는 조금 혼란 스럽다. 또는 양자 택일로, 나는 문맥으로 끌어들이는 방법을 모른다. –

관련 문제