É possível usar macros. O seguinte é uma solução onde macros são anexadas a uma nova barra de ferramentas definida pelo usuário. o itens na barra de ferramentas podem ser usados para alterar valores de vermelho, verde e azul para a cor da fonte.
Também seria possível digitar valores usando
InputBox
nas macros, em vez de alterar incrementalmente o
valores.
Siga as instruções de instalação. É aconselhável seguir eles estritamente como a maneira de definir / trabalhar com macros em O OpenOffice não é muito intuitivo.
-
Inicie o Impress . Crie uma apresentação vazia ou abra alguma apresentação existente.
-
Copie o código no final desta resposta para a área de transferência. Crie uma macro para aumentar o valor de Red por 20: menu Ferramentas / Macros / Organizar macros / OpenOffice.org Basic /. Em seguida, expanda para "Minhas Macros / Padrão /" para que "Padrão" seja selecionado. Pressione o botão "Novo".
-
Clique com o botão direito do mouse na aba no canto inferior esquerdo, selecione "Renomear" e digite "RedUp". Clique na área de edição (para definir o foco lá), selecione all ( Ctrl + A ) e cole no código. Altere a linha com
changeValue(0, 0, 0)
parachangeValue(20, 0, 0)
. este é para aumentar o valor de Red em 20.Clique com o botão direito na aba no canto inferior esquerdo e selecione: Insert / BASIC Module.
-
Repita o passo 3 cinco vezes para que haja 6 módulos ao todo:
Module name changeValue line ---------------------------------------------- RedUp changeValue( 20, 0, 0) RedDown changeValue( -20, 0, 0) GreenUp changeValue( 0, 20, 0) GreenDown changeValue( 0, -20, 0) BlueUp changeValue( 0, 0, 20) BlueDown changeValue( 0, 0, -20)
-
Criar nova barra de ferramentas: menu Ferramentas / Personalizar / guia Barras de ferramentas / pressionar o botão Novo / < nome da "Barra de ferramentas de cores" > / OK
-
Então Adicionar / OpenOffice.org Macros / Minhas Macros / Padrão / RedUp / < selecione "Principal" > / Adicionar / Fechar / Modificar / Renomear / Vermelho Acima / OK. (Nota: se "Principal" não estiver selecionado, um erro de script acontecerá mais tarde, porque "changeValue" é selecionado por padrão.)
-
Repita para os outros 5. Reorganize a ordem dos itens na barra de ferramentas para que o mesmo a ordem é mantida como na tabela acima.
-
Por fim, pressione OK para fechar a caixa de diálogo.
Agora, a cor de primeiro plano do texto selecionado pode ser mudou e o resultado foi visto quase que imediatamente! a seleção deve ser apagada, pois inverte a cor.)
Se você deseja aplicar a cor atual a outro texto
em seguida, adicione um item 7 à barra de ferramentas onde a linha changeValue
é: changeValue(0, 0, 0)
. Ou alternativamente pressione um Up e um
Abaixo uma cor (que não está muito perto de 0 ou 255).
A cor atual também é lembrada em todo o programa reinicia como o valor RGB é armazenado em um arquivo de configurações. UMA caminho de amostra para o arquivo de configurações é:
C:\Documents and Settings\peterm\Application Data\OpenOffice.org\user\prefs\settings.ini
Se algo der errado, então settings.ini
pode ser
excluído. Será recriado na próxima vez que esse recurso for
usado.
Eu testei com o OpenOffice 3.2.0, en-GB, mas espero para trabalhar com o OpenOffice 3.1.
O código (a linha com changeValue (0, 0, 0) precisa ser alterada):
REM ***** OOoBasic. <http://en.wikipedia.org/wiki/StarOffice_Basic> *****
Global RedDecimal as Long
Global BlueDecimal as Long
Global GreenDecimal as Long
Sub Main
rem Default values if settings have not been stored yet.
RedDecimal = 210
GreenDecimal = 100
BlueDecimal = 40
changeValue(0, 0, 0)
End Sub
sub changeValue(aRedChange, aGreenChange, aBlueChange)
ReadSettings
RedDecimal = newChannelValue(RedDecimal, aRedChange)
GreenDecimal = newChannelValue(GreenDecimal, aGreenChange)
BlueDecimal = newChannelValue(BlueDecimal, aBlueChange)
WriteSettings
dim document as object
document = ThisComponent.CurrentController.Frame
dim dispatcher as object
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem Set font (foreground) colour. Note that lines for background colour
rem are outcommented - it does not work in Impress, but it does work
rem in Calc.
dim args3(0) as new com.sun.star.beans.PropertyValue
rem args3(0).Name = "BackgroundColor"
args3(0).Name = "Color"
args3(0).Value = RedDecimal * 256 * 256 + GreenDecimal * 256 + BlueDecimal
rem dispatcher.executeDispatch(document, ".uno:BackgroundColor", "", 0, args3())
dispatcher.executeDispatch(document, ".uno:Color", "", 0, args3())
End Sub
rem *************************************************************************
Function newChannelValue(aStartValue as Long, aChange as Long) as Long
Dim toReturn as Long
toReturn = aStartValue + aChange
If toReturn > 255 Then
toReturn = 255
End If
If toReturn < 0 Then
toReturn = 0
End If
newChannelValue = toReturn
End Function
rem *************************************************************************
Sub WriteSettings
SubstService = CreateUnoService("com.sun.star.util.PathSubstitution")
UserPath = SubstService.substituteVariables("$(user)", true)
PrefFile = UserPath + "/prefs/settings.ini"
f1 = FreeFile()
Open PrefFile for output as #f1
Print #f1, RedDecimal
Print #f1, GreenDecimal
Print #f1, BlueDecimal
Close #f1
End Sub
rem *************************************************************************
Sub ReadSettings
SubstService = CreateUnoService("com.sun.star.util.PathSubstitution")
UserPath = SubstService.substituteVariables("$(user)", true)
PrefFile = UserPath + "/prefs/settings.ini"
If FileExists(PrefFile) Then
f1 = FreeFile()
Open PrefFile for Input as #f1
dim redStr as String
dim greenStr as String
dim blueStr as String
Line Input #f1, redStr
Line Input #f1, greenStr
Line Input #f1, blueStr
Close #f1
RedDecimal = CInt(redStr)
GreenDecimal = CInt(greenStr)
BlueDecimal = CInt(blueStr)
Else
WriteSettings
End If
End Sub