Ir para o conteúdo

PTEN

Ícone da app DWF View

Alterações ao DWF Toolkit

As alterações que a DWF View faz ao DWF Toolkit da Autodesk, publicadas para outros programadores.

Sobre a app · Suporte

O que é o DWF Toolkit

O DWF Toolkit é a biblioteca em C++ que a Autodesk, Inc. publicou para que outros programas possam ler e escrever ficheiros DWF e DWFx. A DWF View inclui-a, em binário, para abrir estes ficheiros.

  • Versão de base: DWF Toolkit 7.7, tal como está no repositório público github.com/kveretennicov/dwf-toolkit, commit fd1e809.
  • Licença: o DWF Toolkit License Agreement da Autodesk, Inc. A cláusula 1.1.2 b) pede a quem altera o toolkit que publique a especificação das alterações para outros programadores. É o que esta página faz.
  • Os avisos de direitos de autor do toolkit e dos componentes que vêm dentro dele estão na app, em Avisos de terceiros: no Mac, no menu DWF View; no iPhone e no iPad, no ecrã de abertura.

As alterações

A maior parte das alterações põe código escrito nos anos 2000, para o Windows de 32 bits e para os Mac com PowerPC, a funcionar nos sistemas e compiladores atuais, de 64 bits. Nenhuma muda a interface de programação do toolkit nem o formato DWF.

  1. Números nos gráficos do DWF clássico (W2D). O toolkit lia inteiros de 4 bytes com o tamanho do tipo long da linguagem C, que tem 8 bytes nos sistemas da Apple de 64 bits, e as coordenadas e outros valores saíam errados. As coordenadas, as espessuras de linha e os valores de 32 bits passam a ser lidos sempre com 4 bytes. Ficheiros: whiptk/file.cpp, whiptk/lweight.cpp.
  2. Ordem dos bytes nos processadores da Apple. O toolkit partia do princípio de que todos os Mac são big-endian, como eram os PowerPC. Passa a tirar a ordem dos bytes do compilador, e os Intel e os Apple silicon são lidos como little-endian. Ficheiro: whiptk/whipcore.h.
  3. Mensagens de erro. Ao copiar uma mensagem de erro, só se limpavam 2 bytes do zero final, o que supõe o wchar_t de 2 bytes do Windows. Nos sistemas da Apple o wchar_t tem 4 bytes, e as mensagens chegavam com lixo no fim. Passa a limpar-se um carácter inteiro. Ficheiro: dwfcore/Exception.cpp.
  4. Compiladores atuais. Pequenas alterações para o código compilar com as versões atuais do Clang e da libc++: membros de modelos chamados através de this->, cabeçalhos normais de C e C++ em vez de um cabeçalho interno do GCC, e o tipo Byte da zlib sempre definido. Ficheiros: dwfcore/Vector.h, dwfcore/mac/Core.h, dwfcore/zlib/zconf.h.
  5. Interfaces atuais do macOS e do iOS. Os contadores atómicos usam as operações atómicas do C11 em vez das funções OSAtomic, retiradas, e o temporizador usa mach_absolute_time em vez da função UpTime do Carbon, que já não existe. Ficheiros: dwfcore/mac/Core.cpp, dwfcore/mac/Timer.cpp.
  6. Paginação da memória. O gestor de memória usava um armazenamento SQLite em memória que falha no iPhone e no iPad. Passa a usar o armazenamento em ficheiro do próprio toolkit, num ficheiro temporário que se apaga quando deixa de ser preciso (logo, onde o sistema o permite, ou no fim do programa). A pasta temporária e o separador de caminhos seguem o sistema, incluindo o Windows. Ficheiro: dwfcore/paging/MemoryManager.cpp.
  7. Ficheiros estragados. Quando um pacote DWFx estragado tem uma parte que não se consegue ler, o toolkit passa a dar um erro, em vez de ler através de uma referência vazia e fechar a app. Uma secção ou um recurso sem nome, tipo ou endereço, uma cor com menos de três números e um número em falta num atributo passam a ser ignorados ou lidos como zero, em vez de fecharem a app. Ficheiros: dwf/opc/RelationshipContainer.cpp, dwfcore/XMLParser.cpp, dwf/package/Manifest.cpp, dwf/package/SectionBuilder.cpp, dwf/package/Paper.cpp, dwf/package/reader/EPlotSectionDescriptorReader.cpp, dwf/package/utility/ResourceContainer.cpp, dwfcore/ansi/String.cpp.
  8. Sem 3D. A DWF View mostra só desenhos 2D, por isso o componente de 3D (w3dtk) e as classes de apresentação 3D que dependem dele não são compilados. Com DWFTK_SEM_W3D definido, o leitor das apresentações lê um nó de vista 3D como um nó de referência simples e ignora as definições 3D dele (câmara, matrizes, cores, planos de corte). Ficheiros: dwf/presentation/reader/ContentPresentationReader.cpp, dwf/package/XML.cpp.
  9. Microsoft Visual C++. Dois cabeçalhos normais incluídos onde o código os usa, porque esse compilador não os traz por outros cabeçalhos. Ficheiro: dwfcore/paging/Archive.h.
  10. Arrumação. Uma linha em branco retirada em whiptk/image.cpp.

Ficheiro de alterações

Todas as alterações, em formato diff unificado em relação ao commit fd1e809, com os caminhos relativos à raiz do toolkit (por exemplo, git apply numa cópia desse commit).

Marcas

DWF e DWFx são marcas da Autodesk, Inc. A DWF View não é da Autodesk, Inc., nem é patrocinada ou aprovada por ela.

Última atualização: 11 de novembro de 2026